अपाचे 2 मेमोरी उपयोग सीमित करें


9

मैं एक प्राचीन ब्लू एंड व्हाइट G3 / 300 के डेबियन पीपीसी निचोड़ 2.6.30 पर चल रहा है। प्रदर्शन फिर से शुरू होने के कुछ समय के लिए ठीक है, लेकिन यह अंततः अधिक से अधिक टूट जाता है। अभी यह 76 दिनों के अपटाइम पर है, और मुख्य अपराधी को 10+ एपाचे 2 प्रक्रियाओं का मेमोरी उपयोग प्रतीत होता है।

मुझे लगता है कि मैं के लिए मूल्यों को कम करने की आवश्यकता StartServers, MinSpareServersऔर, / या MaxSpareServersहै, लेकिन मुझे यकीन है कि जो एक समायोजित करने के लिए नहीं कर रहा हूँ, और प्रत्येक पर निर्भर करते हुए mpm मॉड्यूल उपयोग में है के लिए तीन वर्गों रहे हैं।

मैं यह कैसे बताऊं कि मुझे निम्नलिखित में से किस अनुभाग को बदलने की आवश्यकता है, और कुछ उचित मान दिए गए हैं कि बॉक्स में 448 एमबी भौतिक मेमोरी (प्रत्येक 64, 128 और 256 स्टिक्स में से एक का अजीब अपग्रेड इतिहास) है?

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

वहाँ StartServers के किसी भी अन्य उदाहरण मेरी apache2.conf में नहीं हैं, लेकिन उन mpm मॉड्यूल में से कोई भी में दिखाई देते हैं mods-availableया mods-enabled। विचार?

धन्यवाद!


मैं इस धारणा पर चला गया हूं कि आपका बॉक्स मेमोरी पर कम चल रहा है (और आपका घटिया प्रदर्शन जोरदार स्वैपिंग से आ रहा है)। यदि आप स्वैप नहीं कर रहे हैं तो मैं आपको अधिक जानकारी के लिए बग
दूंगा

जवाबों:


6

400MB इन दिनों एक वेब सर्वर के लिए ज्यादा नहीं है - आप बॉक्स की जगह पर विचार करना चाह सकते हैं :)

उस ने कहा, यदि आपकी मेमोरी का उपयोग गुब्बारा कर रहा है, तो आपके पास संभवतः कहीं मेमोरी लीक है - httpd प्रक्रियाओं के आकार पर त्वरित परीक्षण के लिए, तो Apache को रोकें / शुरू करें और देखें कि क्या वे बहुत छोटे हैं। यदि वे उन्हें कुछ दिनों के लिए देख रहे हैं और देखते हैं कि क्या वे बढ़ते हैं।

यदि यह मेमोरी लीक है तो इसके लिए असली समाधान मेमोरी लीक को ढूंढना और उसे ठीक करना है, लेकिन चूंकि यह आमतौर पर गधे में दर्द होता है इसलिए आप MaxRequestsPerChild0 (असीमित) के अलावा किसी अन्य चीज़ में भी समायोजित कर सकते हैं । यह अपाचे श्रमिकों को तब मार डालेगा जब उन्होंने एक निश्चित संख्या में अनुरोध किया था (इस प्रक्रिया में उनकी लीक हुई मेमोरी को छोड़ने के लिए मजबूर किया था।

बड़े मूल्यों (हजारों या तो में) से शुरू करें और अपने तरीके से सैकड़ों में काम करें। यदि आप प्रति बच्चे 100 अनुरोधों से नीचे आते हैं, तो आपकी मेमोरी लीक वास्तव में इसे ठीक करने के लिए वारंट के रूप में बड़ी है, क्योंकि प्रदर्शन लगातार हिटिंग से हिट होता है और अपाचे श्रमिकों को फिर से फैलाना महत्वपूर्ण होगा।


पुन :: जो mpm समायोजित करने के लिए, उत्तर लगभग निश्चित रूप से है prefork
आप दौड़ सकते हैं httpd -Vऔर उस Server MPM:लाइन की तलाश कर सकते हैं जो आपको निश्चित रूप से बताएगी।


1
-V ने मुझे आवश्यक जानकारी दी (हालांकि यह अपाचे 2 -V मेरे मामले में है)। धन्यवाद!
अल्ट्रा नं

लगता है चाल चली गई है। मुझे लगता है कि समस्या यह थी कि मैं शारीरिक मेमोरी से बाहर निकल रहा था और स्वैपिंग कर रहा था क्योंकि बहुत सारे चाइल्ड सर्वर ऊपर थे (प्रत्येक में लगभग 80 एमबी था)। और हाँ, मुझे पता है, सर्वर पुराना है। लेकिन यह मुश्किल से किसी भी अनुरोध को संभाल रहा है: ओडी।
अल्ट्रानुर्ड

1
यदि आप बहुत सारे अनुरोधों को नहीं संभाल रहे हैं, तो आप अपने मूल पोस्ट में बताए गए प्रारंभ और स्पेयर सर्वर की संख्या को भी ट्रिम कर सकते हैं (विकास प्रणालियों पर मैंने उन सभी को राम के उपयोग को कम करने के लिए 2 और 5 के बीच किसी चीज़ पर सेट किया है)
voretaq7

मैंने ५ और १० से ३ और ६ को न्यूनतम और अधिकतम पुर्जों को छोड़ना समाप्त कर दिया, और चीजों को अदला-बदली करने के लिए पर्याप्त रैम बचा हुआ छोड़ दिया। धन्यवाद!
अल्ट्राएनडर्ड

1

एपाचे प्रक्रिया की मेमोरी उपयोग को बंद करने के लिए आप मैक्सक्लाइजर्स को समायोजित करना चाहेंगे।

अंगूठे का सामान्य नियम है: (अधिकतम वांछित मेमोरी) / (1 अपाचे प्रक्रिया की मेमोरी उपयोग) = # अधिकतम ग्राहक

अंत में आपको MaxSpareServers होने के लिए भी समायोजित करने की आवश्यकता है <= मैक्स ग्राहक

आपके द्वारा लोड किए गए मॉड्यूल (php और इसी तरह) पर एक प्रक्रिया की मेमोरी उपयोग दृढ़ता से निर्भर है, इसलिए आप अधिकतम ग्राहकों को थोड़ा कम सेट करना चाह सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.