नए अनुरोधों के लिए वेब सर्वर कैसे सुनते हैं?
जब वेब सर्वर के बारे में सीखना और वे कैसे काम करते हैं, तो आप उत्सुक हो सकते हैं यदि वे लगातार अनुरोधों के लिए सुन रहे हैं या यदि वे कार्रवाई में जाने का अनुरोध प्राप्त होने तक प्रतीक्षा करते हैं। इस बात को ध्यान में रखते हुए, आज के SuperUser Q & A पोस्ट में एक पाठक की जिज्ञासा को संतुष्ट करने के लिए उत्तर हैं.
आज का प्रश्न और उत्तर सत्र सुपरयूज़र के सौजन्य से आता है-स्टैक एक्सचेंज का एक उपखंड, क्यू एंड ए वेब साइटों का एक समुदाय-संचालित समूह है।.
Xmodulo / Linux स्क्रीनशॉट (फ़्लिकर) के सौजन्य से स्क्रीनशॉट.
प्रश्न
SuperUser पाठक user2202911 जानना चाहता है कि वेब सर्वर नए अनुरोधों को कैसे सुनते हैं:
मैं वेब सर्वर कैसे काम करता है, इसके 'गहन स्तर' के विवरण को समझने की कोशिश कर रहा हूं। उदाहरण के लिए, अपाचे कहते हैं कि मैं जानना चाहता हूं कि नए अनुरोधों के लिए लगातार मतदान हो रहा है या यदि यह किसी प्रकार की रुकावट प्रणाली द्वारा काम करता है। यदि यह एक रुकावट है, तो रुकावट क्या है? क्या यह नेटवर्क कार्ड ड्राइवर है?
एक वेब सर्वर नए अनुरोधों के लिए कैसे सुनता है?
उत्तर
SuperUser योगदानकर्ता ग्रेग Bowser हमारे लिए जवाब है:
संक्षिप्त उत्तर कुछ प्रकार की व्यवधान प्रणाली है। अनिवार्य रूप से, वे नए डेटा की प्रतीक्षा करते समय अवरुद्ध I / O का उपयोग करते हैं, जिसका अर्थ है कि वे सोते हैं (ब्लॉक).
- सर्वर एक सुन सॉकेट बनाता है और फिर नए कनेक्शन की प्रतीक्षा करते हुए ब्लॉक करता है। इस समय के दौरान, कर्नेल प्रक्रिया को एक में डाल देता है नींद बाधित राज्य और अन्य प्रक्रियाओं को चलाता है। यह एक महत्वपूर्ण मुद्दा है; इस प्रक्रिया के लगातार होने से सीपीयू संसाधनों की बर्बादी होगी। कर्नेल प्रक्रिया को अवरुद्ध करके सिस्टम संसाधनों का अधिक कुशलता से उपयोग करने में सक्षम है जब तक कि इसके लिए काम नहीं करना है.
- जब नया डेटा नेटवर्क पर आता है, तो नेटवर्क कार्ड एक बाधा जारी करता है.
- यह देखते हुए कि नेटवर्क कार्ड से एक बाधा है, कर्नेल, नेटवर्क कार्ड ड्राइवर के माध्यम से, नेटवर्क कार्ड से नया डेटा पढ़ता है और इसे मेमोरी में संग्रहीत करता है। (यह जल्दी से किया जाना चाहिए और आम तौर पर बाधा हैंडलर के अंदर संभाला जाता है।)
- कर्नेल नए आने वाले डेटा को संसाधित करता है और इसे सॉकेट के साथ जोड़ता है। उस सॉकेट पर अवरुद्ध होने वाली एक प्रक्रिया को चलाने योग्य माना जाएगा, जिसका अर्थ है कि यह अब चलाने के योग्य है। यह आवश्यक रूप से तुरंत नहीं चलता है (कर्नेल अन्य प्रक्रियाओं को चलाने का निर्णय ले सकता है).
- अपने अवकाश पर, कर्नेल अवरुद्ध वेब सर्वर प्रक्रिया को जगाएगा। (चूंकि अब यह चल रहा है।)
- वेब सर्वर प्रक्रिया जारी रहती है जैसे कि कोई समय बीत गया हो। इसका ब्लॉकिंग सिस्टम कॉल रिटर्न देता है और यह किसी भी नए डेटा को प्रोसेस करता है। फिर चरण 1 पर जाएं.
स्पष्टीकरण में कुछ जोड़ना है? टिप्पणियों में विचार व्यक्त करो। अन्य टेक-सेवी स्टैक एक्सचेंज उपयोगकर्ताओं से अधिक उत्तर पढ़ना चाहते हैं? पूरी चर्चा धागा यहाँ देखें.