2012-10-12 13 views
5

जब मैं एक सरल कंसोल एप्लिकेशन (डीबग मोड में नहीं) से अपने एज़ूर सर्विस बस कतार में 1000 सरल संदेश भेजने का प्रयास करता हूं, तो इसमें http मोड के साथ 90 सेकंड लगते हैं।Azure Service Bus speed

मानक नेटटीसीपी मोड के साथ इसमें 70 सेकंड लगते हैं।

क्या गति हर किसी को भी मिलती है? मुझे उम्मीद है कि यह तेजी से बढ़ेगा, लेकिन शायद यह सही है?

उत्तर

6

क्या आप यह सब एक ही थ्रेड में कर रहे हैं? एकाधिक थ्रेड/कार्य का उपयोग करने का प्रयास करें संदेशों को समानांतर में सबमिट करें। इसके अलावा, आप एक उच्च प्रवाह क्षमता आप अपने app.config में कुछ परिवर्तन करने की कोशिश कर सकते चाहते हैं:

<system.net> 
    <settings> 
     <servicePointManager expect100Continue="false" useNagleAlgorithm="false"/> 
    </settings> 
    <connectionManagement> 
     <add address = "*" maxconnection = "48" /> 
    </connectionManagement> 
    </system.net> 

अंत में, एक Windows Azure वी एम (अधिमानतः एक ही डेटासेंटर) के भीतर से सांत्वना एप्लिकेशन को क्रियान्वित करने का प्रयास करें। यह आपके वैन कनेक्शन के किसी भी प्रभाव को रद्द कर देगा।

+0

मध्यम या बड़े वीएम का उपयोग करने का प्रयास करें, छोटे लोगों के पास आईओ सीमित है। –

+4

समांतर। के लिए (0, 1000, i => SendM (i, क्लाइंट)) और आपकी कॉन्फ़िगरेशन में परिवर्तन समय को 10 सेकंड तक कम कर देता है। धन्यवाद! – Martin

1

बैच भेजने के तरीकों का लाभ उठाने पर भी देखें। Azure SDK में सेवा बस क्लाइंट कतार पर एक विधि है जो आपको एक समय में संदेशों का बैच भेजने की अनुमति देती है। यह बड़ी कॉल के खर्च पर कुल नेटवर्क ओवरहेड को कम कर देता है। आप बैच आकार को अधिकतम करने के लिए ट्यून कर सकते हैं जो आपके लिए काम करता है, और कतार संदेश जब तक आप बैच भरते हैं या एक निश्चित टाइमआउट तक पहुंच जाता है। यह आपको बैच करने की अनुमति देता है लेकिन अभी भी उचित समय में उत्तरदायी हो सकता है।