2015-05-23 15 views
5

Ho configurato correttamente un cluster RabbitMQ che supporta MQTT tramite il plug-in MQTT. Al momento, i messaggi MQTT passano uno scambio di argomenti il ​​cui vincolo con una coda di lavoro. Quindi tutti i messaggi MQTT sono memorizzati in questa coda di lavoro.Test delle prestazioni di RabbitMQ/MQTT

Ora mi piacerebbe testare le prestazioni di Input di questo cluster studiando i grafici nel plugin di gestione RabbitMQ. Il mio piano era di installare 2 editori MQTT NodeJS che attivassero molti messaggi MQTT all'interno di un ciclo for, ma questo fallisce.

Quando il ciclo for viene eseguito più di 3000 volte, non tutti i messaggi sopravvivere ... (Trova il mio codice di prova di seguito) Mi piacerebbe avere la vostra opinione su questo:

  1. Quali potrebbero essere i messaggi ragione non sopravvivere?
  2. Qual è il modo migliore per valutare le prestazioni di RabbitMQ/MQTT?
  3. Devo utilizzare più editori? Presa [il codice] => [buffer di memoria del cliente] => [inviare-system:

Codice:

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

Si può provare a utilizzare un QoS di 1 o 2? –

+0

Per caricare il test del broker MQTT, è possibile utilizzare alcuni strumenti simili a https://github.com/emqtt/emqtt_benchmark/ (tuttavia è necessario installare Erlang). Oppure puoi fare la stessa cosa https://github.com/mqttjs/mqtt-stack/blob/master/benchmark/send.js –

+0

Le tue domande non sono chiare. Che cosa significa esattamente "non sopravvivere"? Il tuo abbonato non li vede tutti? Google "MQTT QOS". Il test delle prestazioni è complicato. Questa è la nostra azienda per 20 anni. Per i principianti, è necessario chiedersi ESATTAMENTE ciò che si sta testando. La prossima domanda è "dov'è il collo di bottiglia?". L'ultima cosa che vuoi è che il tuo banco di prova sia il collo di bottiglia. Per un suggerimento sui problemi vedi queste pagine: http://gambitcomm.blogspot.com/2017/09/how-to-right-size-your-iot-platform.html e http://gambitcomm.blogspot.com/ 2016/10/MQTT-prestazioni-metodologia-using.html –

risposta

0

messaggio vengono confezionati in presa ruscello e byte di dati effettivi sono da qualche parte sul percorso buffer] => [recv-system socket buffer] => [codice server].

Se si utilizza localhost, la possibilità per il buffer di socket per i messaggi 3K è minima, ma esiste.

Non ho molta familiarità con il client mqjt nodeJS, ma se sta eseguendo client.end() con l'operazione di spegnimento del socket è possibile che alcuni frame mqtt semplicemente non raggiungano il server.

avete alcune opzioni per il test come:

  • sonno un po 'prima client.end(), solo un po';
  • usa QoS = 1 messaggi, ancora hai la possibilità di perdere alcuni byte non compressi, a seconda della configurazione della dimensione della finestra mqtt;
  • uso dovrebbe occupare più appropriato, è possibile google per "generatore di carico MQTT" per i campioni
Problemi correlati