2017-04-06 11 views
1

Ich benutze mosquitto 1.4.10.Mosquitto tötet manchmal Client-Verbindungen

Ich habe einen Client, der mehrere Nachrichten zum selben Thema in Batches veröffentlicht (z. B. 50 Nachrichten pro Batch). Der Client sendet jede Charge alle paar Sekunden (z. B. alle 5 Sekunden). Nachdem 1 oder ein paar Chargen gesendet wurden, wird mosquitto bei der nächsten Charge plötzlich die Verbindung zum Client beenden.

Ich habe provided a packet capture von der Maschine, auf der der Broker läuft, zeigt das Verhalten, das ich unten beschreiben werde.

Kunde: 172.16.0.114 mosquitto Broker: 10.16.208.139 (port 8883)

Die Zahlen unten sind die Paketnummern in der Erfassungsdatei.

1: Client

17 ?: Client Broker verbindet starten ersten Charge von Nachrichten veröffentlichen

386: Erste Stapel von Nachrichten komplett

387: startet Kunde zweiten Charge von Nachrichten veröffentlichen

388: Fehlendes Paket?

389: mosquitto ACKs Paket 387

390: mosquitto beginnt Spamming TCP DUP ACK-Pakete für 387

549: mosquitto stoppt Spam-TCP DUP ACK-Pakete für 387

550-578: Lots Neuübertragungen

784: Zweiter Stapel von Nachrichten komplett

785: Dritte Stapel von Nachrichten beginnen

788: mosquitto sendet FIN ACK, die Verbindung geschlossen

790-880 (WARUM?): Mosquitto reagiert auf weitere Nachrichten mit RST

Die wichtigste Frage, warum plötzlich die Verbindung schließen würde mosquitto wird nach dem Empfang des 3. Stapels von Nachrichten. Die Protokolle in mosquitto an dieser Stelle, wo die dritte Partie beginnt, ist hier:

18:52:24 
1491418344: OpenSSL Error: error:140E0197:SSL routines:SSL_shutdown:shutdown while in init 
18:52:24 
1491418344: Socket error on client admin, disconnecting. 
+0

Scheint viel viel wahrscheinlicher, dass dies ein Client-seitiges oder Netzwerk-Problem als ein Mosquitto-Problem ist. Oder ein Problem mit dem Hosting von Mosquitto. Haben Sie versucht, den lokalen Client für Mosquitto auszuführen, sehen Sie, ob das anders funktioniert. – barny

Antwort

0

Dies wurde durch einen Fehler in mosquitto verursacht wird, dass die bestehenden SSL-Verbindungen töten würde, wenn eine andere Nicht-SSL-Verbindung versucht wurde. Die vom AWS-Lastenausgleich ausgeführte TCP-Integritätsprüfung hat insbesondere ein kleines TCP-Paket gesendet, das den Fehler zum Beenden der Verbindung meines Clients ausgelöst hat.

Siehe Ausgabe mosquitto github.