2012-11-17 15 views
5

तो मुझे इस रेल एप्लिकेशन को एक भयानक स्मृति रिसाव समस्या के साथ मिला है। मैं इसे हेरोकू पर चला रहा हूं, और पिछले कुछ दिनों से जब मैं यह पता लगाने की कोशिश कर रहा हूं कि पृथ्वी पर क्या चल रहा है, मुझे हर 5 घंटे या तो ऐप को लगातार पुनरारंभ करना पड़ता है या स्मृति 512 से अधिक हो जाती है और मेरा ऐप दुर्घटनाग्रस्त हो गया।रेल ऐप में मेमोरी लीक ... स्ट्रिंग दुःस्वप्न

मैं ओंक का उपयोग कर रहा हूं, और मुझे अपने तत्काल कक्षाओं के साथ कुछ भी ख़राब नहीं दिख रहा है। केवल एक चीज यह है कि प्रत्येक पृष्ठ लोड के साथ, स्मृति का उपयोग होता है। यह कोई फर्क नहीं पड़ता कि मैं कौन सा पेज लोड करता हूं, यह प्रतीत होता है कि यह यादृच्छिक है।

नई अवशेष या तो बहुत मदद नहीं कर रही है, क्योंकि इसे किसी एक विशेष नियंत्रक कार्रवाई के साथ नहीं करना है।

एकमात्र चीज जिसे मैं ढूंढने में सक्षम हूं, ऑब्जेक्टस्पेस का उपयोग कर रहा था, जिसने मेमोरी में स्ट्रिंग ऑब्जेक्ट्स की एक बड़ी संख्या का खुलासा किया, और संख्या बढ़ती और बढ़ती है। मैंने तारों के मूल्य को लॉग करने के लिए एक छोटा सा टूल इस्तेमाल किया और वे सभी खाली हैं। शून्य नहीं ... लेकिन सफेद जगह। मेरे उत्पादन ऐप में नियमित रूप से उपयोग में 200,000 से अधिक स्ट्रिंग ऑब्जेक्ट्स हैं।

क्या किसी को पता है कि ये संभवतः से क्या आ सकता है? यह वास्तव में मेरी साइट को जीवित रखने के लिए हर पांच घंटों में अपने कंप्यूटर पर रहने के लिए मुझे परेशान कर रहा है।

धन्यवाद!

+1

कोड को हटाने के अलावा विशिष्ट सलाह देना मुश्किल है जब तक कि आपके पास समस्या का प्रदर्शन करने और –

+0

पोस्ट करने के बाद सबसे छोटा संभव उदाहरण न हो और इसे वैकल्पिक सर्वर पर चलाएं, और इसे तब तक निरंतर CURL अनुरोधों के साथ दबाएं जब तक आप दोबारा नहीं कर सकते। – peterept

+0

सलाह: 'स्ट्रिंग = स्ट्रिंग 1 + स्ट्रिंग 2' न करें, न ही' स्ट्रिंग + = स्ट्रिंग 1'। करें: 'स्ट्रिंग << स्ट्रिंग 1', कोई अतिरिक्त स्ट्रिंग इस तरह से बनाई गई है – apneadiving

उत्तर

8

ठीक है, यह बिल्कुल हास्यास्पद है, लेकिन चिंता और संघर्ष के दो सप्ताह बाद, मुझे इस रिसाव का समाधान मिला। मेरी application.rb कॉन्फ़िग फ़ाइल में

ActionMailer::Base.delivery_method = :smtp 

: यह सचमुच सब इस एक लाइन के लिए नीचे आया।

यह किया गया जाना चाहिए था:

config.action_mailer.delivery_method = :smtp 

मुझे पता नहीं है कि कैसे मैं गलत समझ में आ गया है, लेकिन लड़का यह मेरे ऐप्स पर कहर बरपाने ​​था।

क्या किसी को पता है कि यह ऐसी समस्या क्यों पैदा करेगा? मैं हर एक प्रश्न पर स्मृति की मेगाबाइट खो रहा था। पागल।

+1

से अपग्रेड नहीं किया है, इसके लिए धन्यवाद, शायद आपने मुझे कुछ गंभीर सिरदर्द बचाया है। – tyler

+1

आपने इसे कैसे समझ लिया? मेरा रेल ऐप पागल की तरह स्ट्रिंग बना रहा है और मुझे नहीं पता कि उन्हें क्या बना रहा है इसका पता लगाने के लिए। –

+2

@ मिहाकार यह भयानक था। मुझे सचमुच समय के साथ काम करने, लोड करने और बूट करने के महीनों के माध्यम से वापस जाना पड़ा, और उसके बाद अपाचे बेंचमार्क टूल का उपयोग कर अनुरोधों के साथ सर्वर को हथौड़ा देना पड़ा जब तक कि मुझे कोई संशोधन न हो, जिसमें संशोधन हुआ।तब मैंने टुकड़ा-दर-टुकड़ा प्रत्येक परिवर्तन को तब तक हटा दिया जब तक कि मुझे रिसाव बंद करने वाला कोई नहीं मिला। इसमें दिन लग गए। –

संबंधित मुद्दे