वास्तव में प्री-फोर्क वेब सर्वर मॉडल क्या है?


94

मैं जानना चाहता हूं कि वास्तव में इसका क्या मतलब है जब एक वेब सर्वर खुद को पूर्व-कांटे के वेब सर्वर के रूप में वर्णित करता है। मेरे पास कुछ उदाहरण हैं जैसे कि रूबी के लिए गेंडा और अजगर के लिए अंगरखा

विशेष रूप से, ये सवाल हैं:

  • यह मॉडल किस समस्या का समाधान करता है?
  • जब प्री-फोर्क वेब सर्वर शुरू होता है तो क्या होता है?
  • यह अनुरोध को कैसे संभालता है?

इसके अलावा, गेंडा / अंगरखा के लिए एक अधिक विशिष्ट प्रश्न:

मान लीजिए कि मेरे पास एक वेबप है जिसे मैं (g) गेंडा के साथ चलाना चाहता हूं। आरंभीकरण पर, वेबैप कुछ आरंभीकरण सामान (जैसे अतिरिक्त डेटाबेस प्रविष्टियों को भरें) करेगा। यदि मैं कई श्रमिकों के साथ गेंडा कॉन्फ़िगर करता हूं, तो क्या आरंभीकरण सामान कई बार चलाया जाएगा?

जवाबों:


102

मूल रूप से प्री-फोर्किंग का मतलब है कि एक मास्टर कांटे बनाता है जो प्रत्येक अनुरोध को संभालता है। एक कांटा एक पूरी तरह से अलग * निक्स प्रक्रिया है।

नीचे दी गई टिप्पणियों के अनुसार अपडेट करें। preमें pre-forkअर्थ यह है कि इन प्रक्रियाओं काँटेदार से पहले एक अनुरोध में आता है। हालांकि वे आम तौर पर आई वृद्धि या गिरावट के रूप में लोड ऊपर और नीचे चला जाता है और किया जा सकता है।

प्री-फोर्किंग का उपयोग तब किया जा सकता है जब आपके पास पुस्तकालय हों जो थ्रेड सुरक्षित न हों। इसका मतलब यह भी है कि समस्याओं के कारण अनुरोधों के भीतर समस्याएँ केवल उस प्रक्रिया को प्रभावित करेंगी जो उनके द्वारा संसाधित की जाती है और पूरे सर्वर पर नहीं।

कई बार चलने वाली प्रारंभिकता इस बात पर निर्भर करती है कि आप क्या तैनात कर रहे हैं। आमतौर पर हालांकि कनेक्शन पूल और उस प्रकृति का सामान प्रत्येक प्रक्रिया के लिए मौजूद होगा।

एक थ्रेडिंग मॉडल में मास्टर अनुरोध भेजने के लिए हल्के वजन के धागे भी बनाएगा। लेकिन अगर एक धागा बड़े पैमाने पर मुद्दों का कारण बनता है तो यह मास्टर प्रक्रिया के लिए नतीजे हो सकता है।

इस तरह के Nginx, Apache 2.4 के इवेंट MPM, या जियोवेंट (जिसे Gunicorn के साथ इस्तेमाल किया जा सकता है) जैसे टूल के साथ ये अतुल्यकालिक अर्थ हैं एक प्रक्रिया सैकड़ों अवरोधों को संभाल सकती है जबकि अवरुद्ध नहीं हो सकती।


28
मुझे "प्रीफ़ॉर्क" के अर्थ के बारे में एक ही संदेह था। मेरा मानना ​​है कि यह स्वाभाविक रूप से किसी तरह का फोर्क करने का मतलब है, लेकिन "पूर्व" भाग मुझे भ्रमित कर रहा था। मैंने यहां पाया है संक्षिप्तीकरण ।prefork कि "पूर्व" भाग का वास्तव में अर्थ है कि कार्यकर्ता प्रक्रियाएं पहले से बनाई गई हैं, इसलिए उस समय को केवल तब ही बर्बाद करने के लिए बर्बाद नहीं किया जाता है जब एक कार्यकर्ता की आवश्यकता होती है। मेरे लिए बहुत मायने रखता है :)
एल निंजा ट्रेपडोर

1
//, @ElNinjaTrepador, एक अलग उत्तर क्यों नहीं जोड़ा गया? यह मेरे लिए बहुत अधिक बुद्धिमान था, कम से कम, और यह दूसरों की मदद कर सकता है अगर उस टिप्पणी को अधिक प्रमुख स्थान मिलता है।
नाथन बसानी

2
मैंने प्री-फोर्क में प्री पर थोड़ा और जानकारी जोड़ने का उत्तर अपडेट किया है। @ElNinjaTrepador यह इंगित करने के लिए धन्यवाद कि मैंने महसूस नहीं किया कि अच्छी तरह से ज्ञात नहीं था।
जो डोहर्टी

1
@NathanBasanese साहब करेंगे;)
एल निंजा ट्रेपडोर

4
@JoeDoherty शायद यह सर्वविदित है, यह उस समय तक मेरे द्वारा नहीं जाना गया था: DI एक और उत्तर जोड़ने जा रहा था (जैसा कि नाथन के अनुरोध के अनुसार), लेकिन जब से आपने जोड़ा है कि मैंने आपसे जो कहा है वह अब आवश्यक नहीं है: )
एल निंजा ट्रेपडोर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.