हमारे पास कुछ लंबी चल रही व्यावसायिक प्रक्रियाएं हैं जिन्हें डब्ल्यूएस 2008 आर 2 पर आईआईएस (एकीकृत मोड) में चल रही डब्ल्यूसीएफ सेवाओं के माध्यम से शुरू किया जा रहा है। इन व्यावसायिक प्रक्रियाओं में आम तौर पर हमारे SQL सर्वर बैकएंड के साथ बहुत से इंटरैक्शन शामिल होते हैं। हमने एक कस्टम कार्य कतार कार्यान्वयन बनाया है जिससे अनुरोध प्रारंभिक सेवा कॉल के माध्यम से कतारबद्ध किए गए हैं और बाद में प्राथमिकता के आधार पर निष्पादित किए गए हैं। इस निष्पादन को पूरा करने में लंबा समय लग सकता है (20-30 मिनट चरम)। ग्राहक तब अपने स्वयं के पृष्ठभूमि कार्यों की प्रगति के लिए सर्वर से पूछ सकते हैं।लंबी चल रही प्रक्रियाओं के लिए थ्रेडपूल बनाम स्वयं के थ्रेड
हमारे वर्तमान कार्यान्वयन में कार्यों को थ्रेडपूल से निष्पादित करने के लिए अलग थ्रेड पर बंद कर दिया जाता है। यह reading recommendations के कारण थ्रेडपूल का उपयोग करके लंबे समय से चलने वाले कार्यों को चलाने के लिए किया गया था ताकि एएसपी.NET अनुरोधों को रोका जा सके। हम पृष्ठभूमि कार्यों की संख्या पर ऊपरी सीमा लगाकर उत्पन्न धागे की संख्या को नियंत्रित करते हैं जिन्हें समवर्ती रूप से निष्पादित किया जा सकता है। इस तरह हम सीपीयू पर लोड को नियंत्रित करने की कोशिश करते हैं और बहुत अधिक थ्रेड संदर्भ स्विचिंग को रोकते हैं। हालांकि यह सब हो रहा है, फिर भी हमें आवेदन के लिए सामान्य "ऑनलाइन" अनुरोधों की भी आवश्यकता है।
थॉमस मार्क्वर्ट द्वारा this post पढ़ने के बाद मैं इस तथ्य से चिंतित हूं कि हम थ्रेडपूल का उपयोग नहीं कर रहे हैं क्योंकि हमें इसमें ट्यूनिंग हेरिस्टिक का लाभ नहीं मिलेगा। हम पहले से ही शट डाउन इश्यू को हल करते हैं, थॉमस ने एप्लिकेशन एंड ईवेंट में हुक करके और लंबे समय तक चलने वाले कार्यों को रद्द कर दिया है। तो मेरा सवाल यह है कि, क्या हमें थ्रेडपूल का उपयोग करने के लिए स्विच करना चाहिए? लंबे समय तक इन धागे को बांधने के बारे में क्या? अगर मैं थॉमस को सही ढंग से समझता हूं तो वह कह रहा है कि इससे कोई फर्क नहीं पड़ता क्योंकि थ्रेडपूल सामान्य ऑनलाइन संचालन के लिए अधिक अनुरोध बनाने के लिए खुद को ट्यून करेगा? मैंने this StackOverflow question के माध्यम से भी पढ़ा है जो एक ही आधार को कवर करता है लेकिन मैं अभी भी आगे के रास्ते के बारे में अनिश्चित हूं।
कृपया विस्तृत करें: आपको लगता है कि आप किस विशिष्ट ट्यूनिंग को याद कर सकते हैं? –
शायद "ट्यून" उपयोग करने का सही शब्द नहीं था, लेकिन मैं इस तथ्य का जिक्र कर रहा था कि अगर पृष्ठभूमि कार्य थ्रेडपूल धागे का उपयोग कर निष्पादित कर रहे थे, तो थ्रेडपूल सिस्टम पर रखे गए अतिरिक्त "भार" का "होगा" पृष्ठभूमि कार्यों से। यदि हम उन्हें सामान्य थ्रेड का उपयोग करके चलाते हैं तो थ्रेडपूल में यह ज्ञान नहीं है। दोबारा, मेरे पास थ्रेडपूल हेरिस्टिक्स ठीक तरह से काम करने के बारे में आंतरिक विवरण नहीं है, लेकिन थॉमस के पोस्ट के माध्यम से पढ़ने से मेरी तरफ से चिंता बढ़ गई है कि हम थ्रेडपूल में निर्मित "ट्यूनिंग" तर्क को साइड-स्टेपिंग कर रहे हैं, -TreadPool धागे – Carel