IIS ऐप पूल, वर्कर प्रोसेस, ऐप डोमेन


88

क्या कोई भी आईआईएस में आवेदन पूल, कार्यकर्ता प्रक्रियाओं और ऐप डोमेन के बीच अंतर की व्याख्या कर सकता है? इसके अलावा, वे एक साथ कैसे काम करते हैं? मैंने कुछ लेख पढ़े हैं लेकिन यह अभी भी थोड़ा भ्रमित करने वाला है।

  1. क्या IIS में बनाई गई प्रत्येक वेबसाइट एक आवेदन बन जाती है?
  2. क्या प्रत्येक आवेदन एक कार्यकर्ता प्रक्रिया से जुड़ा है?
  3. ऐप डोमेन चित्र में कहां आते हैं?

जवाबों:


103

मैं उन्हें दूसरे शब्दों के साथ कहने की कोशिश करता हूं।

एक सर्वर में आपके पास कई asp.net साइट हो सकती हैं जो एक साथ चलती हैं। हर एक साइट एक ऐप डोमेन है

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

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

जब आप किसी एकल पूल में कई कार्यकर्ता प्रक्रिया को असाइन करते हैं तो आप तथाकथित वेब गार्डन बनाते हैं और यदि आपकी कंप्यूटर एक प्रोसेसिंग मशीन है तो आपकी साइट एक से अधिक कंप्यूटरों से चलाना पसंद करती है।

पूल और प्रक्रियाओं के साथ ऐप डोमेन

प्रत्येक कार्यकर्ता प्रक्रिया में कई सूत्र हो सकते हैं।

अधिक कार्यकर्ता प्रक्रिया आपको कैसे प्रभावित करती है:
जब आपके पास एक कार्यकर्ता प्रक्रिया होती है तो सब कुछ अधिक सरल होता है, आपके आवेदन के बीच सभी स्थिर चर समान होते हैं, और आप lockउन्हें सिंक्रनाइज़ करने के लिए उपयोग करते हैं।
जब आप एक से अधिक कार्यकर्ता प्रक्रिया असाइन करते हैं, तब भी आप lockस्थिर वैरिएबल के लिए उपयोग करना जारी रखते हैं , तो स्थिर वैरिएबल आपकी साइट के कई रनों के बीच भिन्न नहीं होते हैं, और यदि आपके पास कुछ सामान्य संसाधन हैं (जैसे डिस्क पर थंबनेल का निर्माण) फिर आपको अपनी कार्यकर्ता प्रक्रिया को सिंक्रनाइज़ करने की आवश्यकता है Mutex

एक और नोट। इसकी आवाज़ यह है कि जब आप अधिक कार्यकर्ता प्रक्रिया करते हैं तो आपके पास अधिक चिकनी अतुल्यकालिक पृष्ठ लोड हो सकते हैं। Asp.net के सत्र हैंडलर के साथ एक छोटा मुद्दा है जो एक पेज लोड के लिए पूरी प्रक्रिया को लॉक करता है - यह अच्छा है और अच्छा निर्भर नहीं है यदि आप इसे जानते हैं और इसे संभालते हैं - या इसे बदलते हैं।

तो एक साइट के बारे में केवल कई कार्यकर्ता प्रक्रिया के बारे में बात करते हैं। यहां आपको उस समस्या का सामना करना पड़ता है जिसे आपको अपने सामान्य संसाधन परिवर्तन के साथ सिंक्रनाइज़ करने की आवश्यकता है Mutex। लेकिन वे पृष्ठ / हैंडलर जो सत्र का उपयोग करते हैं, वे अतुल्यकालिक नहीं हैं क्योंकि सत्र उन्हें लॉक करता है। यह शुरुआत के लिए अच्छा है क्योंकि आप कई बिंदुओं के इस सिंक्रनाइज़ेशन को अपना स्व बनाने से बचते हैं।

इस विषय पर कुछ प्रश्न:
उसी सत्र को साझा करने के दौरान किसी अन्य वेब ऐप को संसाधित करते समय वेब ऐप को ब्लॉक किया
गया है। वेब सेवा के लिए jQuery Ajax कॉल तुल्यकालिक
ASP.NET प्रतीत होता है सर्वर पृष्ठों को प्रोसेस नहीं करता है अतुल्यकालिक रूप से
ASP.Net के सत्र को पूरी तरह से बदल देता है

अब यह सत्र लॉक विभिन्न साइटों को प्रभावित नहीं करता है।

विभिन्न साइटों के बीच अधिक काम करने की प्रक्रिया एक साइट को लंबी चलने की प्रक्रिया के साथ दूसरे को अवरुद्ध करने में मदद नहीं कर सकती है।
विभिन्न साइटों के बीच अधिक पूल भी मदद कर सकते हैं, क्योंकि प्रत्येक पूल में कम से कम एक काम करने की प्रक्रिया होती है, लेकिन प्रक्रिया खोजकर्ता का उपयोग करके अपने आप को याद रखें और देखें, प्रत्येक काम करने की प्रक्रिया आपके कंप्यूटर की अधिक मेमोरी लेती है, और 16G मेमोरी के साथ एक बड़ा सर्वर और एक SQL सर्वर में बहुत अधिक भिन्न कार्य प्रक्रिया नहीं हो सकती है - उदाहरण के लिए 100 साझा साइटों वाले सर्वर पर, आपके पास 100 भिन्न पूल नहीं हो सकते।


मुझे पता चल रहा है कि यह IIS 5 और उससे ऊपर की तुलना में IIS 5 को कैसे संभालता है यह अलग है। तो IIS 5 में आपके पास एक वर्कर प्रक्रिया है और इसमें कई ऐप डोमेन हैं IIS 6 की तुलना में आपके पास प्रत्येक एप्लिकेशन पूल के लिए एक से अधिक वर्कर प्रक्रियाएं (w3wp.exe) हैं। IIS 6.0 inetinfo रिडायरेक्ट के आधार पर विभिन्न वर्कर प्रोसेस में रीडायरेक्ट करता है। क्या मैं यहीं हूँ? यहाँ मेरा स्रोत dotnetslackers.com/articles/iis/…
Ravi

@ user460103 हां iis5 एक कार्यकर्ता प्रक्रिया है (कई ऐप डोमेन केवल एक छोटी हैक के साथ हो सकते हैं, लेकिन एक साथ काम नहीं करते हैं।) जब आपके पास एक साइट पर कई कार्यकर्ता प्रक्रिया होती है, तो हाँ iis6 आपको विभिन्न कार्यकर्ता प्रक्रिया पर पुनर्निर्देशित कर सकता है।
अरस्तू

क्या IIS हर वेब अनुरोध के लिए एक नई प्रक्रिया को स्पिन करता है? या यह एक नया धागा घूमता है?
चर

@ परवरिश एक नए सूत्र को स्पिन करें - प्रक्रिया हर समय बनी रहती है, या वे जिस तरह से आपने उन्हें पूल पर स्थापित किया है, उसे रीसायकल करते हैं ...
अरस्तू

ठीक है, अगर कई प्रक्रियाएं हैं, तो सत्र कैसे काम करता है - मुझे लगा कि प्रति सत्र प्रक्रिया है
चर

18
  • एक IIS सर्वर में कई अनुप्रयोग पूल हो सकते हैं।
  • एक वेब एप्लीकेशन एक एप्लीकेशन पूल में बांधता है।
  • एक अनुप्रयोग पूल में एक से अधिक कार्यकर्ता प्रक्रिया हो सकती है (जब वेब गार्डन सक्षम है)।
  • एक कार्यकर्ता प्रक्रिया में कई ऐप डोमेन हो सकते हैं। एक ऐप डोमेन केवल एक कार्यकर्ता प्रक्रिया में रहता है।
  • एक ऐप डोमेन में कई थ्रेड हो सकते हैं। एक थ्रेड को अलग-अलग समय में अलग-अलग ऐप डोमेन द्वारा साझा किया जा सकता है।

ASP.NET डेवलपर्स का अर्थ: अपनी वेब साइट को स्केलेबल बनाने के लिए, इन-सेल सत्र का उपयोग न करें और सिंक्रनाइज़ेशन के लिए स्थिर वर्ग चर लॉक का उपयोग न करें।


7
  1. हां, हालांकि हर एप्लिकेशन एक वेबसाइट नहीं है। आपके पास एक ऐसा एप्लिकेशन हो सकता है जो किसी वेबसाइट के अंतर्गत नेस्टेड हो ।

  2. हां, हर एप्लिकेशन में एक कार्यकर्ता प्रक्रिया (एप्लिकेशन पूल) होनी चाहिए, हालांकि एक आवेदन पूल में कई एप्लिकेशन सर्वर कर सकते हैं। एक एकल वेब एप्लिकेशन को वितरित किया जा सकता है (वेब ​​गार्डन / फार्म) जिसका अर्थ है कि यह कई प्रक्रियाओं में चलेगा।

  3. प्रत्येक प्रक्रिया अपने स्वयं के ऐप डोमेन में चलेगी (प्रत्येक एप्लिकेशन पूल एक अलग ऐप डोमेन है)।


MSDN से।

एक वेब अनुप्रयोग बनाएँ :

एक आवेदन वेब साइट के रूट स्तर पर सामग्री का एक समूह या वेब साइट की रूट निर्देशिका के तहत एक अलग फ़ोल्डर में सामग्री का समूह है।

आवेदन ताल :

एक एप्लीकेशन पूल एक या एक से अधिक कार्यकर्ता प्रक्रियाओं के समूह को परिभाषित करता है, जो सामान्य सेटिंग्स से कॉन्फ़िगर किया जाता है जो एक या एक से अधिक अनुप्रयोगों के लिए अनुरोध करता है जो उस एप्लिकेशन पूल को सौंपा जाता है। क्योंकि अनुप्रयोग पूल एक या अधिक समान रूप से कॉन्फ़िगर की गई श्रमिक प्रक्रियाओं को साझा करने के लिए वेब अनुप्रयोगों के एक सेट की अनुमति देते हैं, वे सर्वर कंप्यूटर पर अन्य वेब अनुप्रयोगों से वेब अनुप्रयोगों के एक सेट को अलग करने का एक सुविधाजनक तरीका प्रदान करते हैं। प्रक्रिया की सीमाएं प्रत्येक श्रमिक प्रक्रिया को अलग करती हैं; इसलिए, एक अनुप्रयोग पूल में अनुप्रयोग समस्याएँ अन्य अनुप्रयोग पूल में वेब साइटों या अनुप्रयोगों को प्रभावित नहीं करती हैं। एप्लिकेशन पूल आपके वेब इंफ्रास्ट्रक्चर की विश्वसनीयता और प्रबंधन क्षमता दोनों में काफी वृद्धि करता है।


तो IIS प्रक्रिया में कई एप्लिकेशन डोमेन (एप्लिकेशन पूल) और प्रत्येक एप्लिकेशन पूल कई वेबसाइटें हो सकती हैं। तो क्या यह है कि कई वेबसाइट एकल ऐप डोमेन में रहती हैं? क्या होगा अगर एक वेबसाइट में कुछ गलत हो जाता है, तो यह पूरे ऐप डोमेन और उसमें रहने वाली सभी वेबसाइटों को नीचे ले जाता है?
रवि

@ user460103 यदि आप एक पूल को क्रैश करते हैं, तो हाँ सभी साइटें जो इससे जुड़ी हैं, वे बंद हो जाती हैं - और फिर से शुरू होती हैं।
अरस्तू

1
2. नहीं। यदि कोई वेब गार्डन कॉन्फ़िगर किया गया है, तो एक एप्लिकेशन संभवतः एक से अधिक कार्यकर्ता प्रक्रियाओं का विस्तार कर सकता है।
विकिटोर ज़िकला

@Wiktor - मैंने ऐसा नहीं किया। हालांकि, स्पष्ट करने के लिए अद्यतन जवाब।
ओडेड

3

स्रोत लिंक से: -http: //weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx

एक अनुप्रयोग एक IIS शब्द है, लेकिन यह एक है जो ASP.NET उपयोग करता है। अनिवार्य रूप से यह एक सैंडबॉक्स, या अलग-अलग साइटों, या साइटों के कुछ हिस्सों को दूसरों से अलग करने के लिए सीमाओं का एक सेट बनाता है।

एक AppDomain एक .NET टर्म है। (IIS7 में, AppDomains IIS के भीतर एक बड़ी भूमिका निभाता है, लेकिन अधिकांश भाग के लिए यह ASP.NET शब्द है)

वेब एप्लिकेशन के अनुरोध को संसाधित करने के लिए कार्यकर्ता प्रक्रिया का उपयोग किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.