Wir haben kürzlich die Skalierbarkeit von NGINX zum Lastenausgleich von WebSocket -Verbindungen getestet. Sogar bei 50.000 aktiven WebSocket-Verbindungen benötigte NGINX weniger als 1 GB Arbeitsspeicher und weniger als 1 CPU-Kern, und bei Auslastung mit sehr ausgelasteten Verbindungen war die Speichernutzung stabil und stieg langsamer als die Nachrichtengröße. Die Leistung in Ihrer Umgebung hängt von der Art Ihrer Anwendung ab, die Ergebnisse dieser Tests können jedoch einen Hinweis auf die Menge der von NGINX voraussichtlich verwendeten Ressourcen geben.
Für diese Tests wurden folgende Maschinen verwendet:
Wir haben zwei Testreihen durchgeführt.
Die erste Testreihe simulierte langlebige und überwiegend inaktive Verbindungen. Die Anzahl der Verbindungen variierte zwischen 1.000 und 50.000, die Nachrichtengröße zwischen 10 und 4.096 Byte und die Nachrichtenhäufigkeit zwischen 0,1 und 10 Sekunden (was wir als niedrig betrachteten).
Die Ergebnisse zeigen, dass der Gesamtspeicherbedarf für WebSocket-Verbindungen von der Anzahl der Verbindungen abhängt und dass der pro Verbindung verwendete Speicher konsistent ist. Die Speicherauslastung wird nicht durch die Nachrichtengröße oder -häufigkeit beeinflusst. Die CPU-Auslastung hängt grundsätzlich von der Anzahl der Verbindungen ab, und selbst bei 50.000 Verbindungen wurde nicht ein ganzer CPU-Kern genutzt. Die hier dargestellte CPU-Auslastung wird auf einen einzelnen Kern normalisiert, indem die CPU-Auslastung aller Kerne addiert wird. Die folgenden Grafiken zeigen die Ergebnisse dieser Testreihe:
Die zweite Testreihe simulierte kurzlebige, aber hochaktive Verbindungen. Die Anzahl gleichzeitiger Verbindungen wurde konstant bei 500 gehalten, mit 50 Nachrichten pro Verbindung und ohne Verzögerung zwischen den Nachrichten. Die Nachrichtengröße lag zwischen 1 und 4096 Bytes
Die Ergebnisse zeigen, dass bei einer festen Anzahl gleichzeitiger Verbindungen die gesamte Speicherauslastung und der pro Verbindung genutzte Speicher von der Nachrichtengröße abhängen. In beiden Fällen variiert die Speichermenge jedoch nicht stark und verläuft unterlinear, d. h. sie steigt um weniger als 15 % an.
Während dieser Tests lieferte NGINX beim Proxying von WebSocket-Servern eine vorhersehbare und skalierbare Leistung. Dabei handelte es sich um synthetische Tests, die nicht unbedingt repräsentativ für eine reale Anwendung sind. Die Ergebnisse von Tests, die auf anderen Systemen durchgeführt wurden, können daher abweichen. Weitere Informationen finden Sie unter:
„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."