2015-04-03 5 views
11

हम टीसीपी पर .NET Remoting द्वारा उपयोग किए गए थ्रेड की संख्या बढ़ाने की कोशिश कर रहे हैं। हमने ThreadPool.SetMinThreads को बदलने का प्रयास किया है, लेकिन हमारे तनाव परीक्षण से पता चलता है कि .NET Remoting केवल 100 समवर्ती अनुरोधों को संभाल सकता है। (हालांकि यह एक कठिन सीमा नहीं है)। कार्य प्रबंधक में, हम अपनी रिमोटिंग सर्वर प्रक्रिया थ्रेड गिनती 11 से 80 तक बढ़ सकते हैं, जो तब तनाव परीक्षण के बाद 11 तक गिर जाती है। हम एक एएसपी.नेट 4.0 आवेदन चला रहे हैं।टीसीपी पर .NET Remoting द्वारा उपयोग किए गए थ्रेड की संख्या में आप कैसे वृद्धि करते हैं?

+0

मैं कुछ प्रश्न हैं। 1. आप किस प्रकार की रिमोट ऑब्जेक्ट्स का उपयोग करते हैं? सिंगलटन, सिंगलकॉल, क्लाइंट या सर्वर सक्रिय? 2. मुझे यकीन नहीं है कि मैं आपको सही ढंग से समझता हूं। क्या यह आपके लिए एक समस्या है कि थ्रेड गिनती गिर जाती है। 3. आपकी मशीन में कितने प्रोसेसर/कोर हैं? 4. क्या मैं सही हूं कि आप आईआईएस का उपयोग रिमोटिंग ऑब्जेक्ट्स होस्ट करने के लिए करते हैं? 5. आप इतने सारे धागे क्यों चाहते हैं? क्या आप प्रदर्शन में सुधार करना चाहते हैं? –

+1

सिंगलकॉल। ग्राहक सक्रिय 16 कोर आईआईएस रिमोटिंग क्लाइंट होस्ट करता है। एक विंडोज सेवा रिमोटिंग सर्वर होस्ट करता है। हम प्रदर्शन में सुधार करना चाहते हैं क्योंकि हम देखते हैं कि हम केवल एक ही समय में रिमोटिंग पाइप के माध्यम से 100 अनुरोध निचोड़ सकते हैं (भले ही ये अनुरोध थ्रेड के अलावा कुछ भी नहीं कर रहे हैं। दूसरी तरफ सो जाओ)। – meub

+0

मैं 2 और चीजों के बारे में पूछना चाहता हूं। 1।क्या मैं सही हूं कि आपने रिमोटिंग सर्वर पर 'ThreadPool.SetMinThread' का उपयोग किया था? 2. आपने तनाव परीक्षण कैसे किया? मुझे आश्चर्य है कि सर्वर को अनुरोध आईआईएस पर होस्ट किए गए रिमोटिंग क्लाइंट से भेजा गया था या शायद आईआईएस पर होस्ट नहीं किए गए किसी अन्य एप्लिकेशन से? –

उत्तर

0

SetMinThreads के वापसी मूल्य देखें।

यदि आप ऋणात्मक संख्या या सक्रिय थ्रेड पूल धागे की अधिकतम संख्या (GetMaxThreads का उपयोग करके प्राप्त) से बड़ी संख्या निर्दिष्ट करते हैं, तो SetMinThreads झूठी रिटर्न देता है और न्यूनतम मानों में से कोई भी नहीं बदलता है। (link)

+0

हां हमने पहले से ही यह कोशिश की है और हमें सत्य का वापसी मूल्य मिल रहा है। हमने बाद में GetMinThreads को यह भी पुष्टि करने के लिए कहा है कि हमने न्यूनतम धागे को हमारे द्वारा अपेक्षित रूप से सेट किया है। ऐसा लगता है कि रिमोटिंग वास्तव में थ्रेडपूल का उपयोग अपने धागे को प्रबंधित करने के लिए नहीं करता है ... – meub

4

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

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

आदेश आईआईएस के लिए धागे की संख्या में वृद्धि करने के लिए मैं सुझाव है कि आप करने की कोशिश करने के लिए:

  • चेक विन्यास (इस question देखें)।
  • आईआईएस पर SetMinThreads का उपयोग करने का प्रयास करें।

मेरी तरफ से आखिरी टिप्पणी यह ​​है कि आपको याद रखना होगा कि थ्रेड पूल में धागे की बहुत छोटी संख्या और न ही बहुत अधिक धागे अच्छे हैं। दोनों परिस्थितियां प्रदर्शन को नुकसान पहुंचा सकती हैं।

0

क्या आप सुनिश्चित हैं बाधा धागा है, न कि नेटवर्क कनेक्शन ..? डिफ़ॉल्ट रूप से, .NET में प्रति दूरस्थ आईपी उपलब्ध पर्याप्त मात्रा में सॉकेट उपलब्ध हैं। यह दूरस्थ बनाने के लिए, http (WCF, वेब सेवा ग्राहकों), आदि पर लागू होता है

आप अपने ऐप config/web.config में system.net/connectionManagement के तहत इस ओवरराइड कर सकते हैं यदि यह आप, क्या देख रहे हैं है जैसे:

<configuration> 
... 
    <system.net> 
    <connectionManagement> 
     <add address="*" maxconnection="1000"/> 
    </connectionManagement> 
    </system.net> 

अधिक है कि config सेटिंग के बारे में जानकारी यहां पाया जा सकता है: https://msdn.microsoft.com/en-us/library/fb6y0fyc%28v=vs.110%29.aspx

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