मेरे पास वर्तमान में एक Apache2 सर्वर है जो 512M वास्तविक / 1024M बर्स्टेबल रैम (कोई स्वेप्ट) के साथ OpenVZ VPS पर mpm-preforkऔर साथ नहीं चल रहा है mod_php। कुछ परीक्षणों को चलाने के बाद, मैंने पाया कि अधिकतम प्रक्रिया का आकार अपाचे 23M है, इसलिए मैंने MaxClients25 (23M x 25 = 575 एमबी, मेरे लिए ठीक है) पर सेट किया है। मैंने अपने सर्वर पर कुछ लोड परीक्षण चलाने का फैसला किया, और परिणामों ने मुझे हैरान कर दिया।
मैं abअपने डेस्कटॉप मशीन पर एक वर्डप्रेस ब्लॉग से मुख्य पृष्ठ का अनुरोध कर रहा हूं ।
जब मैं ab24 समवर्ती कनेक्शनों के साथ चलता हूं , तो सब कुछ ठीक लगता है। निश्चित रूप से, सीपीयू ऊपर जाता है, मुफ्त रैम नीचे जाता है, और परिणाम प्रति अनुरोध 2-3 बार प्रतिक्रिया समय होता है।
लेकिन अगर मैं ab25 समवर्ती कनेक्शन (मेरी सर्वर सीमा) के साथ चलता हूं, तो अपाचे बस कुछ सेकंड के बाद लटका देता है। यह अनुरोधों को संसाधित करना शुरू कर देता है, फिर यह जवाब देना बंद कर देता है, सीपीयू 100% बेकार और abसमय से बाहर चला जाता है। अपाचे लॉग का कहना है कि यह पहुंच गया MaxClients।
जब ऐसा होता है, तो Apache अपने आप को 25 चालू प्रक्रियाओं के साथ बंद रखता है (यदि वे सर्वर स्थिति की जांच करते हैं तो सभी में "W" हैं) और TimeOutसेटिंग के बाद ही प्रक्रियाएं मरने लगती हैं और सर्वर फिर से जवाब देना शुरू कर देता है (मेरे मामले में यह सेट है से ४५)।
मेरा प्रश्न: क्या वह अपेक्षित व्यवहार है? क्यों अपाचे मर जाता है जब यह पहुंच जाता है MaxClients? यदि यह 24 कनेक्शनों के साथ काम करता है, तो क्या यह 25 के साथ काम नहीं करना चाहिए, बस प्रत्येक अनुरोध का जवाब देने और शेष को कतारबद्ध करने में अधिक समय लग सकता है?
यह मुझे बहुत अजीब लगता है कि कोई भी बच्चा abअकेले सर्वर के समवर्ती कनेक्शन को सेट करके वेबसर्वर को मार सकता है MaxClients।