Websocket ist gut, aber könnte es 1.000.000 gleichzeitige Verbindungen verarbeiten?
Wie viele Systemressourcen werden gehalten, um 1.000.000 Websocket offen zu halten?
Aktualisierte Antwort
Kurze Antwort : Ja, aber es ist teuer.
Lange Antwort :
Diese Frage betrifft nicht nur 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 kompliziert, aber 1.000.000 gleichzeitige aktive Socket-Verbindungen sind für ein System mit der richtigen Größe (viel CPU, RAM und schnelles Netzwerk) und mit einem optimierten Serversystem und einer optimierten Serversoftware möglich.
Die Anzahl der Verbindungen ist nicht das Hauptproblem (das ist meistens nur eine Frage der Kerneloptimierung und des ausreichenden Speichers), sondern das Verarbeiten und Senden / Empfangen von Daten zu / von jeder dieser Verbindungen. Wenn die eingehenden Verbindungen über einen langen Zeitraum verteilt sind und meistens inaktiv sind oder nur selten kleine Teile statischer Daten senden, können Sie wahrscheinlich viel mehr als sogar 1.000.000 gleichzeitige Verbindungen erhalten. Selbst unter diesen Bedingungen (langsame Verbindungen, die größtenteils 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.
Siehe Alessandro Alinones Antwort zur ungefähren Ressourcennutzung für 500.000 Verbindungen.
Im Folgenden finden Sie einige ältere, aber noch anwendbare Ressourcen, in denen Sie nachlesen können, wie Sie Ihren Server konfigurieren und Ihre Serversoftware schreiben, um eine große Anzahl von Verbindungen zu unterstützen:
Auf heutigen Systemen ist die Verarbeitung von 1 Million gleichzeitigen TCP-Verbindungen kein Problem.
Ich kann dies aufgrund unserer eigenen Tests bestätigen (vollständige Offenlegung: Ich bin der CTO bei Lightstreamer).
Wir mussten einigen unserer Kunden mehrmals zeigen, dass 1 Million Verbindungen auf einer einzigen Box (und nicht unbedingt auf einer Super-Monster-Maschine) erreicht werden können. Aber lassen Sie mich die Konfiguration zusammenfassen, in der wir 500K gleichzeitige Verbindungen getestet haben, da dies ein viel neuerer 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 Updates / s betrug, was zu Spitzenwerten der ausgehenden Bandbreite von 450 Mbit / s führte.
Der Server verbrauchte nie mehr als 13 GB RAM und die CPU war zu etwa 60% stabil.
Mit mindestens 30 GB RAM können Sie 1 Million gleichzeitige Sockel verarbeiten. Die benötigte CPU hängt vom benötigten Datendurchsatz ab.
quelle