में मानक धागे, थ्रेडपूल और टीपीएल का उपयोग कब करें, मैं हाल ही में थ्रेडिंग के बारे में बहुत कुछ पढ़ रहा हूं क्योंकि मैं उच्च प्रदर्शन, स्केलेबल टीसीपी सर्वर को संभालने में सक्षम हूं 10,000-20,000 ग्राहक, जिनमें से प्रत्येक ग्राहक लगातार कमांड-आधारित सिस्टम के साथ सर्वर पर द्विपक्षीय रूप से संचार कर रहा है। सर्वर को कमांड प्राप्त होगा, और आदेश के अनुसार या तो एकल (या कई) कार्य निष्पादित करेगा। मेरा सवाल यह है कि काम करने के आधार पर विभिन्न स्थितियों के लिए .NET थ्रेडिंग संरचनाओं का उचित उपयोग कैसे करें, कार्यों को निष्पादित करना जो एक मिनट से कई घंटों तक ले सकता है।सी # - एक उच्च गतिविधि सर्वर
मुझे सबसे ज्यादा भ्रमित करने वाला तथ्य यह है कि हर जगह मैंने पढ़ा है, मुझे लगता है कि "लंबे समय से चलने वाले कार्यों को संभालने के लिए मैन्युअल रूप से बनाए गए थ्रेड (या कस्टम थ्रेड पूल) का उपयोग करें, और अल्पकालिक कार्यों के लिए टीपीएल का उपयोग करें , या कार्यों को समानांतर प्रसंस्करण की आवश्यकता है। " क्या वास्तव में है एक लंबे समय तक चलने वाला कार्य? क्या वह 5 सेकंड, 60 सेकंड, एक घंटा है?
- मैन्युअल बनाया धागे
- नेट ThreadPool वर्ग
एक और मुद्दा TPL:
क्या समय सीमा मैं बनाने धागे के इन तीन तरीकों में से प्रत्येक का उपयोग करना चाहिए साथमैंने सोचा है कि निम्नानुसार है - कहें कि मेरे सर्वर में वास्तव में 20,000 ग्राहक जुड़े हैं, जिनमें से प्रत्येक प्रति सेकंड 1 आदेश भेजता है (जो एक या कई कार्यों में अनुवाद कर सकता है)। यहां तक कि शक्तिशाली हार्डवेयर के साथ, क्या कोई मौका नहीं है कि मैं जो भी थ्रेड पूल/वर्क आइटम कतार में वर्कलोड का बहुत अधिक दबाव डाल सकता हूं, जिससे आखिरकार कतार धीरे-धीरे अधिकतम हो जाने के बाद आउटऑफमेमरी अपवाद उत्पन्न हो जाता है?
किसी भी अंतर्दृष्टि की सराहना की जाएगी।
और औसत पर प्रत्येक आदेश कितनी देर तक प्रसंस्कृत किया जाएगा? – rene
यह बात है - वास्तव में यह नहीं बता रहा है कि आदेश कब पूरा होगा। मुझे लगता है कि मुझे तदनुसार योजना बनाने के लिए पर्याप्त जानकारी मिली है। बेशक 20,000 ग्राहक एक लंबा शॉट है (5,000 इस तरह अधिक है), लेकिन यदि आवश्यक हो तो मैं भविष्य में स्केल करने के लिए तैयार होना चाहता हूं। आपकी प्रतिक्रियाओं के लिए आप सबका शुक्रिया। – slashp
@ स्लैशप लांग रनिंग का अर्थ है "कुछ सौ मिलीसेकंड से अधिक", यानी। ऐसा कुछ जो आपके अन्य काम को बाधित करता है (और प्रसंस्करण के लिए महत्वपूर्ण विलंबता प्रस्तुत करता है)। यदि आप उदाहरण के लिए 5 एमएस विलंबता का लक्ष्य रखते हैं, तो 1 एमएमएस को "लंबे समय तक चलने" भी माना जा सकता है: डी भी, मैं यह इंगित करना चाहता हूं कि 20k टीसीपी क्लाइंट व्यावहारिक सीमा के करीब आ रहे हैं - प्रत्येक टीसीपी कनेक्शन को एक अलग बंदरगाह की आवश्यकता होती है, और आपके पास अधिकतम * अधिकतम * 65535 हैं - और वे बंद होने के लगभग 4 मिनट तक रहते हैं। आपको स्केलिंग (सर्वर प्रति अधिक कनेक्शन) की बजाय स्केलिंग (अधिक सर्वर) के बारे में सोचना पड़ सकता है। – Luaan