मैं apache 1.3.41 perl संस्करण 5.8.6 के साथ mod perl 1.3.0 का उपयोग कर रहा हूं, और स्मृति आकार प्रत्येक तीसरे या चौथे अनुरोध के बारे में 4k बढ़ने लगता है। पर्ल स्क्रिप्ट हम चल रहे हैं बस है:मैं mod_perl मेमोरी रिसाव को कैसे ट्रैक करूं?
print "Content-type: text/html\n\n"; print "baby";
फिर भी है कि अपाचे प्रक्रिया अभी बढ़ता है और बढ़ता है जब हम अपाचे बेंचमार्क के साथ यह स्लैम। हम साथ यह मार रहे हैं:
ab -n 100000 -c 1 http://localhost/search/search.cgi &> /dev/null
और हम देखते हैं के रूप में इस प्रक्रिया को आकार 20000 के बारे में अनुरोध के बाद 24 के बारे में 4 मेगाबाइट से बढ़ता है।
नीचे दिए गए प्रश्न का उत्तर देने के लिए: हम इसे redhat Enterprise 4.7 पर कर रहे हैं। इसे इस तरह से अलग किया गया है क्योंकि हमने एक स्थिर फ़ाइल, या सीधे सीजीआई अनुरोध मारा और स्मृति बढ़ती नहीं है। जब हम एक पर्लहैंडलर अपाचे :: रजिस्ट्री या पर्लरुन का उपयोग करते हैं, या केवल पर्लहैंडलर को कुछ कोड पर इंगित करते हैं जो हैंडलर है, तो वे सभी रिसाव करते हैं।
किसी ने भी ऐसा कुछ देखा, या पता है कि क्या चल रहा है?
संपादित करें:
उत्तर लोगों के लिए धन्यवाद। मैंने डेवेल :: साइकिल का उपयोग किया है और एक रिसाव पाया है, लेकिन यहां मुद्दा यह है कि हमने हेडर और एक कथन मुद्रित करने के लिए हमारे कोड को तोड़ दिया है। पर्ल लीक में प्रिंट फ़ंक्शन का कोई तरीका नहीं है (मुझे उम्मीद है ....)। प्रैक्टिकल मॉडपरल में मेमोरी लीक सेक्शन मैंने पढ़ा है, लेकिन यह कोडिंग समस्याओं से संबंधित है, और फिर जब तक कि पर्ल के प्रिंट फ़ंक्शन के साथ कोई समस्या न हो, यह कोड नहीं है।
आप इसे एक ठोस प्रश्न में तैयार करने पर विचार कर सकते हैं। :) – sharkin
आप अपाचे लोगों को एक बग रिपोर्ट पोस्ट करने पर भी विचार कर सकते हैं। –
क्या आप ओएस के विवरण पोस्ट कर सकते हैं जिस पर आप काम कर रहे हैं? क्या आपने प्रक्रिया को तब तक चलने की कोशिश की है जब तक यह स्मृति सीमा तक न पहुंच जाए और आपको अपने सर्वर को पुनरारंभ करना होगा? असल में मैं क्या जानना चाहता हूं कि आपने यह कैसे चुना है कि यह केवल इस मॉड्यूल के साथ स्मृति रिसाव है? –