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