2010-12-13 16 views
5

हमारे पास कुछ लंबी चल रही व्यावसायिक प्रक्रियाएं हैं जिन्हें डब्ल्यूएस 2008 आर 2 पर आईआईएस (एकीकृत मोड) में चल रही डब्ल्यूसीएफ सेवाओं के माध्यम से शुरू किया जा रहा है। इन व्यावसायिक प्रक्रियाओं में आम तौर पर हमारे SQL सर्वर बैकएंड के साथ बहुत से इंटरैक्शन शामिल होते हैं। हमने एक कस्टम कार्य कतार कार्यान्वयन बनाया है जिससे अनुरोध प्रारंभिक सेवा कॉल के माध्यम से कतारबद्ध किए गए हैं और बाद में प्राथमिकता के आधार पर निष्पादित किए गए हैं। इस निष्पादन को पूरा करने में लंबा समय लग सकता है (20-30 मिनट चरम)। ग्राहक तब अपने स्वयं के पृष्ठभूमि कार्यों की प्रगति के लिए सर्वर से पूछ सकते हैं।लंबी चल रही प्रक्रियाओं के लिए थ्रेडपूल बनाम स्वयं के थ्रेड

हमारे वर्तमान कार्यान्वयन में कार्यों को थ्रेडपूल से निष्पादित करने के लिए अलग थ्रेड पर बंद कर दिया जाता है। यह reading recommendations के कारण थ्रेडपूल का उपयोग करके लंबे समय से चलने वाले कार्यों को चलाने के लिए किया गया था ताकि एएसपी.NET अनुरोधों को रोका जा सके। हम पृष्ठभूमि कार्यों की संख्या पर ऊपरी सीमा लगाकर उत्पन्न धागे की संख्या को नियंत्रित करते हैं जिन्हें समवर्ती रूप से निष्पादित किया जा सकता है। इस तरह हम सीपीयू पर लोड को नियंत्रित करने की कोशिश करते हैं और बहुत अधिक थ्रेड संदर्भ स्विचिंग को रोकते हैं। हालांकि यह सब हो रहा है, फिर भी हमें आवेदन के लिए सामान्य "ऑनलाइन" अनुरोधों की भी आवश्यकता है।

थॉमस मार्क्वर्ट द्वारा this post पढ़ने के बाद मैं इस तथ्य से चिंतित हूं कि हम थ्रेडपूल का उपयोग नहीं कर रहे हैं क्योंकि हमें इसमें ट्यूनिंग हेरिस्टिक का लाभ नहीं मिलेगा। हम पहले से ही शट डाउन इश्यू को हल करते हैं, थॉमस ने एप्लिकेशन एंड ईवेंट में हुक करके और लंबे समय तक चलने वाले कार्यों को रद्द कर दिया है। तो मेरा सवाल यह है कि, क्या हमें थ्रेडपूल का उपयोग करने के लिए स्विच करना चाहिए? लंबे समय तक इन धागे को बांधने के बारे में क्या? अगर मैं थॉमस को सही ढंग से समझता हूं तो वह कह रहा है कि इससे कोई फर्क नहीं पड़ता क्योंकि थ्रेडपूल सामान्य ऑनलाइन संचालन के लिए अधिक अनुरोध बनाने के लिए खुद को ट्यून करेगा? मैंने this StackOverflow question के माध्यम से भी पढ़ा है जो एक ही आधार को कवर करता है लेकिन मैं अभी भी आगे के रास्ते के बारे में अनिश्चित हूं।

+0

कृपया विस्तृत करें: आपको लगता है कि आप किस विशिष्ट ट्यूनिंग को याद कर सकते हैं? –

+0

शायद "ट्यून" उपयोग करने का सही शब्द नहीं था, लेकिन मैं इस तथ्य का जिक्र कर रहा था कि अगर पृष्ठभूमि कार्य थ्रेडपूल धागे का उपयोग कर निष्पादित कर रहे थे, तो थ्रेडपूल सिस्टम पर रखे गए अतिरिक्त "भार" का "होगा" पृष्ठभूमि कार्यों से। यदि हम उन्हें सामान्य थ्रेड का उपयोग करके चलाते हैं तो थ्रेडपूल में यह ज्ञान नहीं है। दोबारा, मेरे पास थ्रेडपूल हेरिस्टिक्स ठीक तरह से काम करने के बारे में आंतरिक विवरण नहीं है, लेकिन थॉमस के पोस्ट के माध्यम से पढ़ने से मेरी तरफ से चिंता बढ़ गई है कि हम थ्रेडपूल में निर्मित "ट्यूनिंग" तर्क को साइड-स्टेपिंग कर रहे हैं, -TreadPool धागे – Carel

उत्तर

1

यह वही नहीं है जो आपने पूछा है - लेकिन एक अलग प्रक्रिया (विंडोज़ सेवा कहें) में अपने लंबे समय तक चलने वाले कार्यों को एक साथ क्यों न करें - आप वैसे भी प्राथमिकता कतार बना रहे हैं और ग्राहक कुछ परिणामों के लिए पूछताछ करने जा रहे हैं समय बाद मैं इस दृष्टिकोण के साथ जाऊंगा जहां फ्रंट फ्रंट डब्लूसीएफ सर्विसेज अनुरोधों को कतारबद्ध करता है और स्टेटस अपडेट क्वेरीज का जवाब देता है जबकि पृष्ठभूमि सेवा सेवारत अनुरोध जारी रहेगा। यह वर्तमान में निष्पादित कार्यों को समाप्त करने के बारे में चिंता करने वाले कार्यकर्ता प्रक्रिया को फिर से चलाने की इजाजत देता है। केवल समस्या जो मैं देखता हूं प्रक्रिया प्रक्रिया से बाहर है लेकिन फिर कार्य द्वारा किए गए समय की तुलना में यह महत्वहीन होना चाहिए (क्योंकि वे लंबे समय तक चल रहे हैं)।

1

मेरा सुझाव थ्रेडपूल से बचने के लिए है क्योंकि मेरे पास आपके द्वारा प्रदान किए गए लिंक में सुझाए गए थ्रेड भुखमरी के मुद्दे हैं।

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

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

अब मैं अपने एएसपीनेट ऐप में थ्रेड भुखमरी को रोकने के लिए प्रक्रिया से उद्धरण चलाने के विनय के सुझाव पर विचार कर रहा हूं।

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