2015-05-23 40 views
5

MQTT eklentisi aracılığıyla MQTT'yi destekleyen bir RabbitMQ kümesini başarıyla yapılandırdım. Şu anda MQTT mesajları, bir iş kuyruğuyla bağlanan bir konu değişimini iletmektedir. Bu yüzden tüm MQTT mesajları bu iş kuyruğunda saklanır.RabbitMQ/MQTT performansını test etme

Şimdi RabbitMQ yönetim eklentisindeki grafikleri inceleyerek bu kümenin Giriş performansını test etmek istiyorum. Planım, 2 NodeJS MQTT yayıncısının bir for döngüsü içinde birçok MQTT mesajını kapatmasını sağlamaktı ancak bu başarısız oldu.

  1. Ne nedeni mesajları olabilir: döngü için 3000 defa, tüm iletiler yaşayamaz çalıştığında

    ... Bu konuda fikrinizi almak istiyorum (aşağıda benim test kodunu bulun) hayatta kalma

  2. RabbitMQ/MQTT'nin performansını değerlendirmenin en iyi yolu nedir?
  3. Birden çok yayımcı kullanmalı mıyım?
  4. Kod

:

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

için "mqtt yük jeneratör" için google olabilir? –

+0

MQTT brokerinizi test etmek için, https://github.com/emqtt/emqtt_benchmark/ (eğer kurulu olsa Erlang'a ihtiyaç duyarsınız) gibi bazı araçlarda kullanabilirsiniz. Veya aynı şeyi şu şekilde yapabilirsiniz: https://github.com/mqttjs/mqtt-stack/blob/master/benchmark/send.js –

+0

Sorularınız net değil. Tam olarak ne "hayatta kalmaz" demek? Aboneleriniz hepsini görmüyor mu? Google "MQTT QOS". Performans testi karmaşıktır. Bu bizim şirketimiz 20 yıldır. Yeni başlayanlar için, test ettiklerini tam olarak kendinize sormanız gerekir. Bir sonraki soru "darboğaz nerede" dir. İstediğiniz son şey, test donanımınızın darboğaz olması. Sorunlara bir ipucu için şu sayfalara bakın: http://gambitcomm.blogspot.com/2017/09/how-to-right-size-your-iot-platform.html ve http://gambitcomm.blogspot.com/ 2016/10/mqtt performanslı-metodoloji using.html –

cevap

0

Mesaj akışı prize paketleniyor ve gerçek veri bayt yolda bir yerde şunlardır: [kodunuzu] => [müşterinin bellek tampon] => [send-sistem soket buffer] => [recv sistem soket arabelleği] => [sunucu kodu].

localhost kullanıyorsanız, 3K iletileri için yuva arabelleği olasılığı minimumdur, ancak var.

mqqt nodeJS istemcisine çok aşina değilim, ancak client.end() soket kapatma işlemiyle çalışıyorsa, bazı mqtt çerçevelerinin sunucunuza ulaşmaması mümkündür.

Sen gibi test için bazı seçenekler vardır:

  • uyku client.end() önce biraz sadece biraz;
  • QoS = 1 mesajlarını kullanın, yine de mqtt penceresinin boyutuna bağlı olarak bazı paketlenmemiş baytları kaybetme şansınız var;
  • kullanım Tavsiyen daha uygun, sen numuneleri size 1 veya 2 bir QoS kullanmayı deneyin Can