2015-05-23 12 views
5

मैंने सफलतापूर्वक एक RabbitMQ क्लस्टर कॉन्फ़िगर किया है जो एमक्यूटीटी प्लगइन के माध्यम से एमक्यूटीटी का समर्थन करता है। फिलहाल, एमक्यूटीटी संदेश एक विषय विनिमय पास करते हैं जिसका कार्य कतार के साथ बाध्य होता है। इसलिए सभी एमक्यूटीटी संदेश इस कार्य कतार में संग्रहीत हैं।परीक्षण RabbitMQ/MQTT प्रदर्शन

अब मैं RabbitMQ प्रबंधन प्लगइन में आलेखों का अध्ययन करके इस क्लस्टर के इनपुट प्रदर्शन का परीक्षण करना चाहता हूं। मेरी योजना 2 नोडजेएस एमक्यूटीटी प्रकाशकों को स्थापित करने के लिए एक लूप के भीतर कई एमक्यूटीटी संदेशों को फायर करना था, लेकिन यह विफल हो गया।

जब पाश के लिए 3000 से अधिक बार, सभी संदेशों को जीवित नहीं चलाता है ... (नीचे अपने परीक्षण कोड का पता लगाएं) मैं इस पर अपनी राय करना चाहते हैं:

  1. क्या कारण हो सकता है संदेशों जीवित मत रहो?
  2. खरगोश एमक्यू/एमक्यूटीटी के प्रदर्शन का मूल्यांकन करने का सबसे अच्छा तरीका क्या है?
  3. क्या मुझे एकाधिक प्रकाशकों का उपयोग करना चाहिए?

कोड:

var quantity = 3000; 
var mqtt = require('mqtt'); 
var options = { 
    host: 'localhost', 
    port: 1883, 
    protocolId: 'MQIsdp', 
    rejectUnauthorized: false, 
    protocolId: 'MQIsdp', 
    protocolVersion: 3 
}; 

var client = mqtt.connect(options); 

for(var x=0; x<quantity; x++) 
{ 
    client.publish('/WSN/N536,563E/dynamic',"22"); 
    console.log(x); 
} 

client.end(); 
+0

आप 1 या 2 के एक क्यूओएस का उपयोग कर प्रयास कर सकते हैं के लिए "mqtt लोड जनरेटर के लिए" गूगल कर सकते हैं? –

+0

अपने एमक्यूटीटी ब्रोकर का परीक्षण लोड करने के लिए, आप कुछ टूल पसंद कर सकते हैं https://github.com/emqtt/emqtt_benchmark/ (हालांकि Erlang इंस्टॉल की आवश्यकता है)। या आप इस तरह की चीज कर सकते हैं जैसे https://github.com/mqttjs/mqtt-stack/blob/master/benchmark/send.js –

+0

आपके प्रश्न स्पष्ट नहीं हैं। वास्तव में "जीवित नहीं" मतलब क्या है? आपका ग्राहक उन सभी को नहीं देख रहा है? Google "एमक्यूटीटी क्यूओएस"। प्रदर्शन परीक्षण जटिल है। यह हमारी कंपनी है 20 साल के लिए करता है। शुरुआत करने वालों के लिए, आपको अपने आप से पूछना होगा कि आप क्या परीक्षण कर रहे हैं। अगला सवाल यह है कि "बाधा कहां है?"। आखिरी चीज जो आप चाहते हैं वह आपकी टेस्ट रिग बाधा बननी है। इन मुद्दों पर एक संकेत के लिए इन पृष्ठों को देखें: http://gambitcomm.blogspot.com/2017/09/how-to-right-size-your-iot-platform.html और http://gambitcomm.blogspot.com/ वर्ष 2016/10/mqtt प्रदर्शन-कार्यप्रणाली-using.html –

उत्तर

0

संदेश धारा सॉकेट में पैक किया जा रहा है और वास्तविक डेटा बाइट्स पथ पर कहीं हैं: [आपका कोड] => [ग्राहक की स्मृति बफर] => [भेज-प्रणाली सॉकेट बफर] => [आरईवी-सिस्टम सॉकेट बफर] => [सर्वर का कोड]।

यदि आप लोकलहोस्ट का उपयोग कर रहे हैं, तो 3K संदेशों के लिए सॉकेट बफर का मौका न्यूनतम है, लेकिन मौजूद है।

मैं mqqt nodeJS क्लाइंट से बहुत परिचित नहीं हूं, लेकिन यदि यह सॉकेट शट डाउन ऑपरेशन के साथ client.end() कर रहा है तो यह संभव है कि कुछ mqtt फ्रेम बस आपके सर्वर तक नहीं पहुंचें।

आप की तरह अपने परीक्षण के लिए कुछ विकल्प हैं:

  • नींद client.end() से पहले थोड़ा, बस थोड़ी;
  • QoS = 1 संदेशों का उपयोग करें, फिर भी आपके पास mqtt विंडो के आकार की कॉन्फ़िगरेशन के आधार पर कुछ अनदेखा बाइट्स को खोने का मौका है;
  • उपयोग ख़ाली अधिक उपयुक्त है, तो आप नमूने
संबंधित मुद्दे