2015-05-12 6 views
5

से की तुलना में अलग प्रक्रियाओं से अधिक कॉल संसाधित करने में सक्षम?क्यों WCF सेवा क्यों WCF सेवाओं कॉल और कई संगामिति प्रति instancing के साथ विन्यस्त जब अलग प्रक्रिया के साथ चलाने के अलग ढंग से प्रदर्शन होगा और पूरी तरह से अलग तरह से जब धागे से कहा जाता धागा

मैं जो धागे की संख्या के माध्यम से डेटा वितरित करता है और कॉल (नहीं, लगता है कि ताला कोड में होता है कि फिर से परीक्षण किया जाएगा) WCF सेवा के लिए बनाता है एक आवेदन दिया है। परीक्षण के दौरान देखा गया था कि वितरण ऐप में धागे की बढ़ती संख्या में डब्ल्यूसीएफ प्रसंस्करण सेवा के समग्र प्रदर्शन में वृद्धि नहीं होती है, औसत 800 एमपीएम (संदेश प्रति मिनट संसाधित) होता है, इसलिए थ्रूपुट वास्तव में नहीं बदलता है लेकिन यदि आप दूसरा एप्लिकेशन चलाते हैं तो औसत थ्रूपुट बढ़ जाता है ~ 1200 एमपीएम।

मैं क्या गलत कर रहा हूं? मुझे क्या याद आया? मैं इस व्यवहार को समझ नहीं सकता।

अद्यतन # 1 (टिप्पणी में प्रश्नों का उत्तर)

इस तरह के त्वरित प्रतिक्रिया के लिए धन्यवाद। अधिकतम कनेक्शन कॉन्फ़िगरेशन में 1000 पर सेट है (हाँ system.net में)। इस आलेख का जिक्र wcf Instances and threading अधिकतम कॉल 16 x कोर की संख्या होनी चाहिए, इसलिए मुझे लगता है कि 2 cpu wcf सेवा पर फ़ॉर्म ~ 30 धागे कहा जाता है, तो उन सभी थ्रेड कॉल को स्वीकार करना चाहिए?

क्या साझा साझा स्मृति के साथ इसका कोई संबंध नहीं है? क्योंकि यह शायद कई धागे और प्रक्रियाओं के बीच एकमात्र अंतर है, मुझे लगता है।

अब अधिक सीपीयू या एकल के साथ परीक्षण करने का अवसर नहीं है। कर सकते हैं जब कर सकते हैं।

+0

क्या आप इसे एक सिंगल सीपीयू कोर वातावरण में जांच रहे हैं? मुझे लगता है कि कई कोर शामिल हैं। एक ही कोर वातावरण में अपना परीक्षण आज़माएं और चलाएं। –

+0

आप किस परिवहन का उपयोग कर रहे हैं? –

+0

आपके आवेदन config की system.net खंड में MAXCONNECTION मूल्य (WCF नहीं config) ' <पता जोड़ने =" * "MAXCONNECTION =" 24 "/> ' – Sohaty

उत्तर

0

तो मैं आपको पहले समझने के लिए WCF प्रति कॉल instancing के साथ कॉल प्रक्रियाओं की जरूरत है इस व्यवहार को समझने के लिए लगता है,। संकेत नाम में है - प्रति कॉल

हर कॉल किसी भी ग्राहक बनाता है सेवा का एक नया उदाहरण द्वारा सेवित है (इसका अपवाद reentrancy है, लेकिन यह आपके परिदृश्य में महत्वपूर्ण नहीं है)।

तो, सेवा व्यवहार करने के लिए सेवा संगामिति makes no practical difference को विन्यस्त। भले ही कॉल एक एकल, बहुप्रचारित क्लाइंट, या एकाधिक क्लाइंट से आ रहे हों, सेवा समान व्यवहार करेगी: यह प्रति कॉल एक सेवा उदाहरण तैयार करेगी।

इसलिए, समग्र सिस्टम प्रदर्शन में अंतर क्लाइंट पक्ष पर कुछ होने के कारण होना चाहिए। अगर मुझे जंगली अनुमान लगाना पड़ा तो मैं कहूंगा कि एक ग्राहक दो ग्राहकों की तुलना में धीमी है क्योंकि context switching से जुड़ी लागत की वजह से क्लाइंट को दो अलग-अलग प्रक्रियाओं में चलाकर कम किया गया है (एक अज्ञात तंत्र के माध्यम से)।

अगर मैं सही हूं तो आप जो एक परीक्षण तुम कर सकते हो है, कई एकल पिरोया ग्राहकों चलाकर धागा प्रति उच्चतम प्रदर्शन प्राप्त करने में सक्षम होना चाहिए।

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