it-swarm.com.de

Wie viele Systemressourcen werden für die Offenhaltung von 1.000.000 Websockets benötigt?

Websocket ist gut, kann aber 1.000.000 gleichzeitige Verbindungen verarbeiten?
Wie viele Systemressourcen werden für die Offenhaltung von 1.000.000 Websockets benötigt?

107
k.k. lou

Aktualisierte Antwort

Kurze Antwort : ja, aber es ist teuer.

Lange Antwort :

Diese Frage gilt nicht nur für WebSockets, da WebSockets grundsätzlich langlebige TCP Sockets mit einem HTTP-ähnlichen Handshake und minimalem Framing für Nachrichten sind.

Die eigentliche Frage ist: Könnte ein einzelner Server 1.000.000 gleichzeitige Socket-Verbindungen verarbeiten und welche Serverressourcen würde dies verbrauchen? Die Antwort wird durch mehrere Faktoren erschwert, aber für ein richtig dimensioniertes System (viel CPU, RAM und schnelles Netzwerk)) und mit einem optimierten Serversystem und optimierter Serversoftware sind 1.000.000 gleichzeitige aktive Socket-Verbindungen möglich .

Die Anzahl der Verbindungen ist nicht das Hauptproblem (das ist meistens nur eine Frage der Kernel-Optimierung und des ausreichenden Speichers), sondern die Verarbeitung und das Senden/Empfangen von Daten zu/von diesen Verbindungen. Wenn die eingehenden Verbindungen über einen langen Zeitraum verteilt sind und zumeist inaktiv sind oder nur selten kleine statische Datenblöcke senden, können Sie wahrscheinlich sogar mehr als 1.000.000 gleichzeitige Verbindungen herstellen. Selbst unter diesen Bedingungen (langsame Verbindungen, die zumeist inaktiv sind) treten Probleme mit Netzwerken, Serversystemen und Serverbibliotheken auf, die nicht für die Verarbeitung einer großen Anzahl von Verbindungen konfiguriert und ausgelegt sind.

Lesen Sie die Antwort von Alessandro Alinone über die ungefähre Ressourcennutzung für 500.000 Verbindungen.

Im Folgenden finden Sie einige ältere, aber noch zutreffende Ressourcen, in denen Sie erfahren, wie Sie Ihren Server konfigurieren und Ihre Serversoftware so schreiben, dass sie eine große Anzahl von Verbindungen unterstützt:

58
kanaka

Auf heutigen Systemen ist die Verarbeitung von 1 Million gleichzeitigen TCP Verbindungen kein Problem.

Das kann ich anhand unserer eigenen Tests bestätigen (vollständige Offenlegung: Ich bin der CTO bei Lightstreamer).

Wir mussten einigen unserer Kunden mehrmals nachweisen, dass 1 Million Verbindungen mit einer einzigen Box (und nicht unbedingt mit einer Super-Monster-Maschine) erreichbar sind. Lassen Sie mich jedoch noch einmal die Konfiguration zusammenfassen, in der 500.000 gleichzeitige Verbindungen getestet wurden, da dies ein viel neuer Test ist, der mit Amazon EC2 durchgeführt wurde.

Wir haben Lightstreamer Server (unter anderem ein WebSocket-Server) auf einer m2.4xlarge-Instanz installiert. Dies bedeutet 8 Kerne und 68,4 GiB Speicher.

Wir haben 11 Client-Computer gestartet, um 500.000 gleichzeitige Verbindungen zum Lightstreamer-Server herzustellen. Der Test wurde so konfiguriert, dass der gesamte ausgehende Durchsatz vom Server 90.000 Aktualisierungen/s betrug, was zu Spitzenwerten der ausgehenden Bandbreite von 450 Mbit/s führte.

Der Server hat nie mehr als 13 GiB von RAM und die CPU war stabil um 60%.

Mit mindestens 30 GiB RAM) können Sie 1 Million gleichzeitige Sockets verwalten. Die erforderliche CPU hängt vom Datendurchsatz ab, den Sie benötigen.

142