2009-08-13 16 views
28

में एएसपीनेट अनुप्रयोगों के लिए अलग-अलग एप्लिकेशन पूल मैंने सिफारिशें पढ़ी हैं कि हमें अपने Win2008 सर्वर पर प्रत्येक एएसपीनेट एप्लिकेशन के लिए अलग-अलग एप्लिकेशन पूल बनाना चाहिए।आईआईएस

हमारे पास लगभग 20 ऐप्स हैं जो एक ही सर्वर पर होंगे। मुझे पता है कि यह 20 अलग-अलग कार्यकर्ता प्रक्रियाएं पैदा करेगा जो बहुत अपमानजनक लगता है।

क्या प्रत्येक एप्लिकेशन के लिए अलग-अलग एप्लिकेशन पूल बनाने का अच्छा अभ्यास है?

+1

आप serverfault.com पर यह उत्तर देखना चाहते हैं। http://serverfault.com/questions/2106/why-add-additional-plication-pools-in-iis/2116#2116 –

उत्तर

31

फिर से पोस्ट किया ServerFault से, "Why add additional application pools in IIS?"

  • AppPools के रूप में अलग पहचान चला सकते हैं, तो आप अनुमतियाँ इस तरह से प्रतिबंधित कर सकते हैं।
  • आप प्रत्येक ऐप पूल में एक अलग पहचान असाइन कर सकते हैं ताकि जब आप कार्य प्रबंधक चलाते हैं, तो आप जानते हैं कि कौन सा w3wp.exe है।
  • आप विभिन्न ऐप पूल में चल रहे साइटों को प्रभावित किए बिना एक ऐप पूल रीसायकल/पुनरारंभ कर सकते हैं।
  • यदि आपके पास ऐसी वेबसाइट है जिसमें मेमोरी रिसाव है या आम तौर पर गलत व्यवहार है, तो आप इसे ऐप पूल में रख सकते हैं, इसलिए यह अन्य वेबसाइटों को प्रभावित नहीं करता है
  • यदि आपके पास ऐसी वेबसाइट है जो बहुत सीपीयू-गहन है (उदाहरण के लिए, फोटो का आकार बदलने की तरह), आप इसे अपने ऐप पूल में रख सकते हैं और इसके सीपीयू उपयोग
  • यदि आपके पास कई वेबसाइटें हैं जिनके पास प्रत्येक का अपना SQL डेटाबेस है, तो आप उपयोगकर्ता नाम/पासवर्ड संग्रहीत करने के बजाय सक्रिय निर्देशिका प्रमाणीकरण का उपयोग कर सकते हैं web.config में।
1

यदि आपके ऐप्स स्थिर हैं और अधिक मेमोरी का उपयोग नहीं करते हैं, तो मैं कहूंगा कि उन्हें एक ही ऐप पूल में रखना ठीक है। ऐप पूल आपको अपने अनुप्रयोगों के बीच अलगाव देते हैं।

1

ऐप पूल बनाने के दौरान मुझे लगता है कि एक मुख्य कारण प्रक्रिया प्रबंधन है। सुरक्षा आदि जैसे अन्य कारण भी हैं जब एक आईआईएस-होस्टेड एप्लिकेशन दुर्घटनाग्रस्त हो जाता है तो यह अपनी मेजबान प्रक्रिया को भी नीचे ले जाता है। आईआईएस के पिछले संस्करणों में इसका मतलब था कि सभी वेब गतिविधि एक साथ दुर्घटनाग्रस्त हो गईं। ऐप पूल के साथ आप अपने अनुप्रयोगों को एक-दूसरे से अलग कर सकते हैं। अगर किसी के पास मेमोरी रिसाव है और आपके अन्य ऐप्स को क्रैश करना जारी रहता है तो काम करना जारी रहेगा।

0

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

मैं प्रदर्शन के बारे में बहुत ज्यादा चिंता नहीं करता। अधिकतर समय प्रत्येक वेब एप्लिकेशन के अंदर बिताया जाएगा, इससे कोई फर्क नहीं पड़ता कि प्रत्येक एप्लिकेशन में कौन सी प्रक्रिया है।

0

यह वास्तव में एप्लिकेशन, आपके सुरक्षा मॉडल और एप्लिकेशन पर भरोसा करने पर निर्भर करता है।

यहां कुछ ऐसी चीजें हैं जिन्हें मैं हमेशा लोगों को एप्लिकेशन पूल के साथ काम करते समय विचार करने के लिए कहता हूं।

  • प्रत्येक एप्लिकेशन को सिस्टम संसाधनों के लिए अलग-अलग पहुंच की आवश्यकता होने पर अलग-अलग एप्लिकेशन पूल का उपयोग करें। (एकाधिक प्रक्रिया खातों का उपयोग कर सकते हैं)
  • यदि कोई एप्लिकेशन संसाधन संसाधन है, मिशन महत्वपूर्ण है, या "अज्ञात" है, तो इसे अपने सिस्टम में शेष सिस्टम से अलग करने के लिए सबसे अच्छा है
3

हां, यह 20 अनुप्रयोगों के लिए भी एक अच्छा विचार है।

  1. सुरक्षा। अलग-अलग खातों के तहत चल रहे विभिन्न ऐप पूल।
  2. अलगाव। एक क्रैशिंग ऐप अन्य ऐप्स नहीं लेगा।
  3. मेमोरी (यदि आप 32 बिट चल रहे हैं)। प्रत्येक ऐप पूल में अपना पता स्थान होगा। इस प्रकार आप 1 प्रक्रिया के लिए अधिकतम 2.7 जीबी उपयोग योग्य स्थान की तुलना में अधिक स्मृति को संबोधित कर सकते हैं।
  4. आप अन्य अनुप्रयोगों को प्रभावित किए बिना एक गैर-अच्छी तरह से व्यवहार करने वाले ऐप को समय-समय पर पुनरारंभ करना चुन सकते हैं।
5

पूल में ऐप्स को अलग करना एक कारण है जब कोई कारण है, और ऊपर सूचीबद्ध कई अच्छे कारण हैं। हालांकि, अलग-अलग पूलों में ऐप्स को अलग न करने के अच्छे कारण भी हैं।

उसी एक्सेस का उपयोग करने वाले ऐप्स, .NET संस्करण, आदि एक पूल में अधिक कुशलता से चलेंगे और अधिक आसानी से बनाए रखा जाएगा। सबसे कष्टप्रद, आईआईएस निष्क्रिय ऐप पूल को मार देगा, पूल को प्रत्येक उपयोग पर पुनर्निर्मित करने की आवश्यकता होगी। यदि आप अकसर उपयोग किए जाने वाले ऐप्स को अलग करते हैं तो आप उपयोगकर्ताओं पर एक अनावश्यक स्टार्टअप लागत लगाएंगे। इन ऐप्स को एक पूल में जोड़कर खुश उपयोगकर्ताओं के लिए तैयार किया जाएगा जब वे स्टार्टअप लागत, खुश सर्वर का भुगतान नहीं करते हैं, जब वे एकाधिक प्रक्रियाओं और उनके लिए सीपीयू स्लाइस को स्मृति नहीं देते हैं, और जब उन्हें कम ऐप प्रबंधित करना होता है तो अधिक प्रशंसकों पूल।

+1

"कोई कारण होने पर करने के लिए एक अच्छी बात है" .... बिल्कुल। अगर आपको कोई कारण नहीं मिल रहा है जो आपके लिए लागू होता है तो ऐसा न करें। – Ronnie

5

मेरे पास प्रत्येक साइट के लिए अलग-अलग ऐप पूल का उपयोग करके एक ही आईआईएस 7.5 सर्वर पर 58 नेट वेबसाइट और 17 पुरानी क्लासिक एएसपी वेबसाइटें थीं। मैंने देखा कि आईआईएस संपीड़न अंतःस्थापित होने में विफल रहा, जिससे स्टाइल शीट को लगभग 5% भ्रष्ट कर दिया गया। सर्वर पर कार्य मैमेंजर को देखकर, मैं देख सकता था कि सर्वर इसकी 4 जीबी रैम सीमा तक पहुंच रहा था- साइट पर कितना ट्रैफिक प्राप्त हो रहा था, इस पर निर्भर करता है कि प्रत्येक w3wp.exe प्रक्रिया 100 एमबी मेमोरी तक कुछ भी ले रही थी। इसके बाद मैंने सभी वेबसाइटों को केवल 2 एप्लिकेशन पूल (एक .net 4 वेबसाइटों के लिए और पुराने क्लासिक एएसपी साइटों के लिए एक) में स्थानांतरित कर दिया और 3.8 जीबी से घटकर 2.8 जीबी तक पहुंचने के बाद उपयोग की जाने वाली कुल मेमोरी - मुझे 1 जीबी मेमोरी से बचा सर्वर पर अंतरिक्ष। परिवर्तन के बाद (और सर्वर को यातायात के सामान्य स्तर पर वापस आने के लिए कुछ घंटों तक चलने के लिए छोड़कर), w3wp प्रक्रियाएं सभी नेट वेबसाइटों के लिए 300 एमबी और क्लासिक एएसपी वेबसाइटों के लिए 20 एमबी का उपयोग कर रही थीं। मैं बिना किसी समस्या के आईआईएस संपीड़न को फिर से सक्षम कर सकता हूं।

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

मुझे लगता है कि यह हार्डवेयर प्रतिबंधों और सुरक्षा के बीच एक व्यापार-बंद है चाहे आप अलग-अलग ऐप पूल का उपयोग करना चाहते हैं। यदि आपके पास संसाधन हैं तो यह एक अच्छा विचार है।