2010-01-27 12 views
52

एएसपी.NET वेब एप्लिकेशन के लिए कितने कार्यकर्ता प्रक्रियाओं को अनुमति देने का निर्णय लेने का सबसे अच्छा अभ्यास क्या है?एएसपी.नेट वेब गार्डन - मुझे कितने श्रमिक प्रक्रियाओं की आवश्यकता है?

एक सर्वर पर मैं प्रबंधन करता हूं, एक नया ऐपपूल डिफ़ॉल्ट 10 (अधिकतम) कार्यकर्ता प्रक्रियाओं को डिफ़ॉल्ट बनाता है। अन्य लोग सुझाव देते हैं कि सामान्य सेटिंग एक है।

एकाधिक कार्यकर्ता प्रक्रियाओं को हल करने में क्या समस्या है और कितने पर निर्णय लेने के लिए तकनीकें हैं?

+1

मुझे यकीन नहीं था कि यह यहां या सर्वरफॉल्ट पर अधिक उपयुक्त होगा, अगर मुझे गलत विकल्प बनाया गया है और मैं इसे स्थानांतरित कर दूंगा। –

+4

आगे बढ़ें और दोनों जगहों पर पूछें। मुझे लगता है कि आपका प्रश्न यहां प्रासंगिक है। एएसपी.Net परिनियोजन के विनिर्देश अक्सर डेवलपर के विशेषज्ञता क्षेत्र में आते हैं, खासकर जब यह ऐप अनुकूलन से संबंधित है। – DOK

+6

मैं डीओके से सहमत हूं। दोनों जगह उपयुक्त हैं। देव अक्सर ऐसे होते हैं जिन्हें नेटवर्क लोगों को सर्वर को कॉन्फ़िगर करने के बारे में बताना होता है। इस वजह से, उन्हें यह जानकारी चाहिए। – NotMe

उत्तर

47

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

जहां तक ​​आपको कितनी जरूरत है, कुछ लोड परीक्षण करें। ऐप को कड़ी मेहनत करें और देखें कि केवल एक के साथ क्या होता है। फिर इसमें कुछ और जोड़ें और इसे फिर से दबाएं। किसी बिंदु पर आप मशीन नेटवर्क, डिस्क, सीपीयू और रैम को वास्तव में संतृप्त करने के बिंदु तक पहुंच जाएंगे। यही वह समय है जब आप जानते हैं कि आपके पास सही संतुलन है।

संयोग से, आप machine.config फ़ाइल के माध्यम से प्रति कार्यकर्ता प्रक्रिया में उपयोग किए गए थ्रेड की संख्या को नियंत्रित कर सकते हैं। मेरा मानना ​​है कि कुंजी maxWorkerThreads है।

अब, सावधान रहें, यदि आप सत्र का उपयोग करते हैं, सत्र स्थिति कार्यकर्ता प्रक्रियाओं के बीच साझा नहीं की जाती है। मैं आम तौर पर सत्र से बचने की सलाह देता हूं लेकिन यह विचार करने के लिए कुछ है।

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

+1

असल में, यह सत्र स्थिति के साथ एक समस्या थी जिसने इस सवाल को उड़ाया (देखें http://stackoverflow.com/questions/2147578/asp-net- सत्र- स्टेट-and एकाधिक कार्यकर्ता-प्रक्रियाओं)। उपयोगी उत्तर के लिए धन्यवाद (+1) –

+2

डिफ़ॉल्ट सेटिंग सामान्यतः एक है। आपका सर्वर जो 10 को डिफ़ॉल्ट करता है उसे इसके डिफ़ॉल्ट को बदलने के लिए संशोधित किया जाना चाहिए। – NotMe

+1

@ChrisLively, सत्र राज्य कार्यकर्ता प्रक्रियाओं के बीच साझा किया जाता है, वास्तव में सत्र राज्य भी एक ही कुकी नाम वाले कई वेबसाइटों के बीच साझा किया जाता है। –

4

मेमोरी लीक

अन्य सबसे बड़ा लाभ यह मेमोरी लीक से निपटने है। कभी-कभी आप अपने कोड को अनुकूलित करने की कोशिश करते हैं, लेकिन ढांचे में स्वयं और अन्य तृतीय पक्ष पुस्तकालयों में मेमोरी लीक होती है। हमने देखा कि अंततः हमारा आवेदन बहुत अधिक स्मृति तक पहुंचता है और कोई स्मृति अपवाद नहीं देता है।

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

यदि कई कार्यकर्ता प्रक्रियाएं हैं, तो रीसायकल मोड में केवल एक प्रक्रिया धीमी है, लेकिन अन्य अच्छी गति रखते हैं।

1

एक और मामला जब यह कई कार्यकर्ता प्रक्रियाओं को समझ में आता है तो आपके एप्लिकेशन में ताले होते हैं जो इसके समांतरता को रोकते हैं। जीडीआई + आधारित छवि प्रसंस्करण उदाहरणों में से एक है।

मुझे यह मिला जब मैंने my problem के लिए समाधान खोजने का प्रयास किया।

संबंधित मुद्दे