सवाल कौन सा स्थापित करना है: अपाचे वर्कर या प्रीफ़र्क? प्रत्येक के (डी) फायदे क्या हैं?


दोनों के लिए विवरण के आधार पर prefork तथा मज़दूर एमपीएम, ऐसा लगता है कि प्रीफ़र्क प्रकार कुछ हद तक पुराना है, लेकिन मुझे वास्तव में दो प्रकार की उचित तुलना नहीं मिल सकती है।

मैं क्या जानना चाहता हूं:

  • दो संस्करणों के बीच मतभेद क्या हैं?
  • प्रत्येक सर्वर प्रकार के (dis-) फायदे क्या हैं?
  • क्या शर्तों के आधार पर किस प्रकार का चयन करना है, इस पर कोई बुनियादी दिशानिर्देश हैं?
  • क्या दोनों के बीच कोई बड़ा प्रदर्शन अंतर है?

54
2017-07-24 08:47


मूल


देख मैं किस अपाचे एमपीएम का उपयोग करने के लिए चुनूं? - Janus Troelsen


जवाब:


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


39
2017-07-24 09:04



जब तक आप PHP चला रहे हों, तब तक मैंने कार्यकर्ता एमपीएम की सिफारिश की होगी। कार्यकर्ता अपाचे से अनुशंसित एमपीएम है, और बेहतर प्रदर्शन और निचले ओवरहेड देता है। यह केवल इतना है कि PHP डेवलपर ने थ्रेड-सुरक्षा के बारे में कभी नहीं सुना है जिसे आपको प्रीफ़र्क का उपयोग करने की आवश्यकता है। - David Pashley
PHP बहुत लंबे समय तक थ्रेड सुरक्षित रहा है। वे केवल पूर्व-फोर्कर्स के उपयोग का सुझाव देते हैं क्योंकि वे अन्य पुस्तकालयों को नियंत्रित नहीं कर सकते हैं। अन्य डेवलपर्स क्रियाओं के लिए PHP को दोषी ठहराएं। - Alister Bulman
PHP थ्रेड सुरक्षित हो सकता है (हालांकि मुझे शक है) लेकिन सभी पुस्तकालय जो यह लिंक करते हैं निश्चित रूप से नहीं हैं। यहां हम कुछ काफी बड़े PHP अनुप्रयोग चलाते हैं और हर कुछ महीनों में हम प्रीफ़र्क से कार्यकर्ता तक स्विच करने का प्रयास करते हैं, लेकिन हम सीधे दूषित डेटा प्राप्त करते हैं। - Aleksandar Ivanisevic
कम से कम कार्यशील एनएनवी वैरिएबल थ्रेड सुरक्षित, सेटलोकल नहीं होगा php.net/manual/en/function.setlocale.php इसका एक आम उदाहरण है। - radius
एक नोट: यदि PHP संलग्न है तो ये समस्याएं लागू नहीं होती हैं उदा। साथ में php-fpm FastCGI के माध्यम से। फिर कार्यकर्ता एमपीएम ठीक है - तो एफपीएम प्रत्येक PHP अनुरोध को अपनी प्रक्रिया में चलाएगा जबकि अपाचे थ्रेडेड चला सकता है। PHP-Thread-Security समस्या केवल आपको उपयोग करने से रोकती है mod_php, जो अपाचे प्रक्रिया के अंदर PHP चलाता है। - mschuett


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

यह आपको स्थिर और गतिशील सामग्री के मिश्रण की सेवा करते समय स्मृति की थोड़ी सी मात्रा (4 ~ 8 जीबी) के साथ कुछ सौ अप से 1000 समवर्ती कनेक्शनों से स्केल करने में सक्षम बनाता है।

बेशक, आपको अपने समग्र तैनाती (memcached, वार्निश) के हिस्से के रूप में फ्रंट एंड कैशिंग समाधान की जांच भी करनी चाहिए।

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


12
2018-04-02 13:21



क्या आप घटना एमपीएम टिप्पणी पर विस्तार कर सकते हैं? यह बनाम एमपीएम-वर्कर बनाम कैसे ढेर करता है? - Sirex
जबकि कार्यकर्ता एमपीएम पहले से ही धागा आधारित था, और इसलिए दौड़ने के लिए शुरू करने और हल्का करने के लिए बहुत तेज़, घटना एमपीएम अब सॉकेट नहीं चलाती - यह गतिविधि पर अधिसूचित हो जाती है; इसलिए, "घटना"। - adaptr
तो यह उच्च यातायात (13k / सेकंड) साइटों पर बेहतर काम करना चाहिए? - Sirex


प्रश्न पोस्ट होने के लगभग 3 साल हो गए हैं, लेकिन बेहतर प्रदर्शन प्राप्त करने के लिए PHP का उपयोग करते हुए भी मैं पूर्व-कांटा के बजाय कार्यकर्ता एमपीएम के साथ जाऊंगा।

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


6
2017-10-21 17:02





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


2
2017-07-24 13:33



आप apache 2.2 में MPM को मनमाने ढंग से "स्वैप आउट" नहीं कर सकते; यह संकलन समय पर सेट है। - adaptr
आप एपीटी या आरपीएम के साथ कर सकते हैं। आप जिस शैली को पसंद करते हैं उसके आधार पर डेबियन में कई अलग अपाचे 2 पैकेज हैं। - Brendan Byrd


जिस प्रकार आपके पास यातायात के प्रकार और प्रकार की आवश्यकता होगी। और सबसे पहले आपको prefork और कार्यकर्ता के बीच मुख्य अंतर को समझने की जरूरत है। उम्मीद है कि नीचे दिया गया लेख आपको पता लगाने में मदद करेगा! http://slashroot.in/how-is-nginx-different-from-apache


1
2017-11-16 15:30



हम सामग्री के लिंक पसंद नहीं करते हैं, सामग्री के लिंक नहीं। यदि आप लिंक-लक्ष्य पर क्या है, इसका सारांश प्रदान कर सकते हैं, तो यह सर्वोत्तम अभ्यास है। लिंक-रोट होता है। - sysadmin1138♦
प्रश्न अपाचे के बारे में था (nginx apache नहीं है) और prefork या धागे के सापेक्ष गुण (nginx न तो उपयोग करता है) - symcbean