अपाचे 2.2 mpm_worker: अधिक धागे या अधिक प्रक्रियाएं?


17

अपाचे में वर्कर एमपीएम का उपयोग करते समय, आप बच्चे की प्रक्रियाओं की संख्या और प्रति बच्चे की प्रक्रिया के सर्वर थ्रेड्स की संख्या के साथ फील कर सकते हैं।

हर एक के फायदे और नुकसान क्या हैं? आप किन परिस्थितियों में एक या दूसरे को बढ़ाएंगे?

जवाबों:


25

इस प्रकार, थ्रेड्स बनाम प्रक्रियाओं का निर्धारण करते समय ये मेरे शीर्ष विचार हैं:

  1. थ्रेड प्रोसेस की तुलना में बहुत कम निवासी मेमोरी का उपयोग करेंगे। हां, गतिशील रूप से लिंक किए गए पुस्तकालयों के साथ अपाचे नियंत्रण प्रक्रिया के बीच बहुत सी मेमोरी साझा की जाती है और यह चाइल्ड प्रोसेस है, हालांकि प्रत्येक नई प्रक्रिया को आपके द्वारा सक्षम किए गए सभी मॉड्यूल को तुरंत करना होगा।

    उदाहरण के लिए, आपके पास मौजूद प्रत्येक प्रक्रिया के मेमोरी उपयोग की तुलना करके यह आसानी से परीक्षण योग्य है, या तो 5 प्रक्रियाएं और 1 धागा प्रत्येक या 5 प्रक्रियाएं और 25 धागे प्रत्येक। मेरे मामले में, प्रत्येक बच्चे की प्रक्रिया थ्रेड्स की मात्रा की परवाह किए बिना लगभग 7 एमबी लेती है।

    + थ्रेड्स के लिए

  2. एक थ्रेड की तुलना में नई प्रक्रिया को लोड करने के लिए समय और CPU चक्रों के संदर्भ में आरंभ करने में अधिक समय लगता है। यह 'अब' के माध्यम से परोसे गए पृष्ठों की औसत राशि की पुष्टि करके परखा जा सकता है।

    + थ्रेड्स के लिए

  3. प्रोसेस थ्रेड्स सभी प्रक्रिया पर निर्भर करते हैं .. यहां सबसे बड़ी चिंता यह है कि अगर प्रक्रिया के साथ कुछ होता है तो इससे जुड़े सभी थ्रेड प्रभावित होंगे। यदि आप थ्रेड्स के एक समूह के साथ एक एकल प्रक्रिया के साथ चल रहे हैं, तो जब प्रक्रिया मर जाती है तो थ्रेड्स आएगा। इसलिए अधिक प्रक्रियाएं एक बेहतर अलगाव का कारण बनेंगी, और इस प्रकार यदि आप होंगे तो अधिक "दोष" सहनशीलता।

    + प्रक्रियाओं के लिए

  4. (3) से संबंधित, जैसे कि PHP जैसे मॉड्यूल के लिए, उनकी मेमोरी को प्रोसेस द्वारा लोड किया जाता है और सभी थ्रेड्स में साझा किया जाता है। इसका मतलब यह है कि यदि आपके पास 25 थ्रेड्स के साथ 100 एमबीएस तक मेमोरी_लिमिट सेट के साथ php है, तो तकनीकी रूप से अधिकतम लोड पर प्रत्येक थ्रेड अधिकतम 4MBs आवंटित करने में सक्षम होगा (बेशक यह इस तरह से नहीं होगा, कुछ होगा, कुछ होगा भूखा)।

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

कोर्स मैं यहाँ कोई विशेषज्ञ नहीं हूँ जैसा कि मैंने हाल ही में इस से संबंधित हो गया है, इसलिए मैं यह देखने के लिए उत्सुक हूं कि अन्य उत्तर क्या हो सकते हैं!


1
कुछ अच्छी सामान्य जानकारी के लिए +1। यदि संभव हो तो और अधिक गहराई / ठोस विवरण देखना चाहूंगा, हालांकि।
sh- बीटा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.