Wie kommt es, dass Benutzer in Verbindung mit der Ausführung von MQTT für Push-Benachrichtigungen ein 1024-Verbindungslimit überschreiten?
Ich benutze den Mosquitto-Server, von dem ich glaube, dass er kein 1024-Verbindungslimit in der Linux-Version enthält. Also, kann ich einen einzelnen Server (keine Überbrückung usw.) verwenden und 5.000, 10.000+ Benutzer bekommen?
Oder brauche ich unbedingt Brücken? Ich habe nicht viel darüber geschrieben, wie das eingerichtet wird, außer der Konfigurations-Manpage für Mosquitto.
Oder kann ich mit ein paar Linux-Konfigurationseinstellungen umgehen und ich bin gut mit einem einzigen Moskito-Server?
Meine App ist mehr oder weniger eine Instant-Messaging-App, also erwarte ich etwa 10.000 oder vielleicht sogar 20.000 Menschen, die sie mit permanenten 24/7-Verbindungen zu Mosquitto nutzen, um sie auf Nachrichten aufmerksam zu machen.
Hmmm
Theoretisch könnte man die Linux-Einstellung für die maximale Anzahl von Steckdosen für Moskitos aufstellen, was man braucht. Die Frage ist dann um die Leistung. Die Schlüsselmetrik ist die Anzahl der Nachrichten pro Sekunde insgesamt. Wenn Sie 20k Clients verbunden haben, wie viele werden aktiv sein und wie viele Nachrichten werden jeweils senden?
Wenn zum Beispiel die Hälfte Ihrer Clients aktiv ist und 1 Nachricht pro Sekunde sendet, gibt es natürlich 10k msps - nur eingehende. Wenn jede dieser Nachrichten 10 Byte groß ist, sind Sie auf 100 KB / s oder 800 KBit / s ausgelegt.
Ein weiterer Aspekt ist, wie Ihre Themenhierarchie angeordnet ist. Ich kann Ihnen nicht sagen, was das Beste ist, aber es wird sicherlich eine Wirkung haben.
Mein bester Vorschlag wäre, einen Client zu schreiben, der eine reale Person simuliert, und ihn dann zum Testen Ihres Szenarios zu verwenden.
Ich habe Beispiele für extreme Kundenzahlen gesehen: Ссылка , aber keine weiteren Details.
Ein letzter Punkt: IBM produziert gerade ein Redbook über MQTT. Es sollte "im Frühjahr", d. H. Bald verfügbar sein. Ich denke, es wird Skalierungsfragen abdecken.
Für einen Kunden haben wir IBM WebSphere MQs MQTT getestet, wodurch die Anzahl gleichzeitiger Clientverbindungen auf bis zu 240.000 pro Warteschlangenmanager erhöht wurde (MQ-Laufzeitumgebung können Sie viele in einem MQ-Cluster haben). Mir wurde gesagt, dass das ungefähr 10x mehr ist als vernünftigerweise von einem Apache Webserver gehandhabt wird. Die Server-CPU während des Testens war bei & lt; 5% niedrig. Hätte die Anzahl gleichzeitiger MQTT-Clients weit über 240.000 hinaus erhöht, aber das Labor hatte keine Lasttest-Client-Maschinen mehr. IBM MQ ist der Pub / Sub-Provider, der in WebSphere Message Broker ESB integriert ist. Daher erwarte ich, dass das gleiche Ergebnis erzielt wird.
Ich kenne niemanden, der Volumentests von Moskitos mit dieser Anzahl von Verbindungen durchgeführt hat. Ich nehme an, eine Sache, die Sie tun könnten, wäre, eine Instanz von mosquitto zu Ihrer gewählten Laufzeit zu testen und viele Client-Threads während des Systemtests mit ihr zu verbinden.
IBMs Implementierung mit WebSphere MQ als MQTT-Broker unterstützt nachweislich bis zu 100.000 gleichzeitige Verbindungen. Ich glaube, IBMs freier Broker RSMB ist auf 1024 Verbindungen beschränkt.
Sie sollten überlegen, wie Sie Ihren Broker mithilfe von Bridges und einem Bereitstellungsdienst skalieren können, um herauszufinden, mit welchem Broker neue Benutzer verbunden werden sollen.