सवाल MaxClients के साथ लटका अपाचे पहुंचा है


मेरा अपाचे 2.2 (प्रीफॉर्म एमपीएम) लटक रहा है जब मैक्सक्लिंट्स पहुंचे हैं, अनुरोधों को क्यूइंग करने और बच्चों की प्रक्रिया मुक्त होने पर उनकी सेवा करने के बजाए। जब ऐसा होता है, तब तक वेब सर्वर पूरी तरह उत्तरदायी नहीं होता है जब तक कि इसे मैन्युअल रूप से पुनरारंभ नहीं किया जाता है।

सर्वर स्टैक उबंटू 8, माईएसQL 5, PHP 5. हार्डवेयर 2 जीबी रैम के साथ दोहरी ज़ीऑन्स (2.8) है। यह प्रति दिन 30,000 - 50,000 पृष्ठदृश्यों की सेवा करता है। स्टेटिक इमेजेस, सीएसएस, और जेएस को एक अलग सर्वर पर ऑफलोड किया गया है और PHP को एक्सेलेरेटर का उपयोग करके कैश किया गया है। कई पृष्ठों का HTML आउटपुट फाइल सिस्टम में कैश किया गया है।

प्रासंगिक अपाचे निर्देश:

KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 2
StartServers          2
MaxClients          150
MinSpareThreads      25
MaxSpareThreads      75
ThreadsPerChild      25
MaxRequestsPerChild   2000


5
2017-09-02 18:40


मूल


ऐश, मुझे आपके जैसा ही समस्या हो रही थी और मुझे समाधान मिला। इसकी जांच - पड़ताल करें यहाँ, शायद यह आपकी मदद भी कर सकता है। - Rodrigo Sieiro


जवाब:


ऐसा लगता है कि आपका सर्वर स्वैपिंग कर रहा है। अपाचे प्रक्रियाओं के लिए 16 एमबी का उपयोग मानते हुए, 150 x 16MB = 2400 एमबी, आपके सर्वर की क्षमता से परे (2 जीबी)

अपाचे द्वारा उपयोग की जाने वाली मेमोरी की जांच करें, मुझे लगता है कि आपको MaxClients मान को कम करने की आवश्यकता होगी।

आप इसके बारे में अधिक जानकारी प्राप्त कर सकते हैं हार्डवेयर और ओएस मुद्दे खंड अपाचे प्रदर्शन ट्यूनिंग से


3
2017-09-02 18:51



मैं इसे संबोधित करना भूल गया ... प्रत्येक प्रक्रिया वास्तव में लगभग 10 एमबी औसत है, इसलिए 150 * 10 = 1500 एमबी। यहां तक ​​कि यदि ये संख्याएं स्पाइक और सर्वर स्वैपिंग शुरू कर देती हैं, तो क्या मुफ्त मेमोरी की कमी अपाचे को लटकाएगी? यह एक अजीब कारण और प्रभाव की तरह लगता है। - Ash White
हां, अगर अपाचे स्वैपिंग कर रहा है, तो सर्वर जवाब देना बंद कर देगा। वास्तव में वास्तव में दर्दनाक है। यह भी याद रखें कि ओएस को अपाचे के अलावा अन्य प्रक्रियाओं के लिए स्मृति की आवश्यकता है। - hdanniel
मैंने सोचा था कि जब मैंने रैम को 6 जीबी तक बढ़ाया था, तो यह ठीक हो गया था, लेकिन जब मैक्सक्लिंट्स पहुंचे तो अपाचे अभी भी उत्तरदायी नहीं हो रहा है, इससे कोई फर्क नहीं पड़ता कि रैम कितनी मुफ्त है। कोई अन्य विचार? - Ash White


आपका टाइमआउट चर सेट क्या है?

यदि आप इसे सेट नहीं करते हैं तो आप इसे नीचे धक्का देना चाहेंगे:

Timeout 30

जैसा कि एचडी ने कहा है, आप अपने मैक्सिलियंट्स को छोड़ना या राम को बढ़ाने के लिए यह सुनिश्चित करना चाहते हैं कि यह स्वैप को मार नहीं रहा है।


1
2017-09-02 18:54





MaxClients की गणना करें और डिफ़ॉल्ट मान के बजाय उस पर आधारित मान सेट करें।

अधिकतम-ग्राहक की गणना करना

ट्रैफिक उच्च होने पर पहले अपाचे बच्चों के लिए औसत मेमोरी की गणना करें।

उस स्मृति के साथ विभाजित करें जिसे आप अपाचे के लिए आवंटित करना चाहते हैं।

आपके मामले में यदि आप वेबसर्वर के लिए 1 जीबी रैम देना चाहते हैं और औसत प्रक्रिया मेम उपयोग 16 एमबी है तो 1000 एमबी / 16 = 62

यह max_client मान है जो आपको देना चाहिए।

यह भी सुनिश्चित करें कि आप कार्यकर्ता के बजाय उपसर्ग के लिए कॉन्फ़िगर कर रहे हैं

अगर मैं गलत नहीं हूं तो ये prefork-

MinSpareServers

MaxSpareServers      

MaxClients          

MaxRequestsPerChild   

चूंकि आप एक ही मशीन पर mysql और apache चला रहे हैं। आपको और रैम जोड़ने की ज़रूरत है अन्यथा यह स्मृति से बाहर हो जाएगा और स्वैपिंग शुरू कर देगा। जो आगे धीमा हो जाता है।


0
2017-08-07 08:14