Ich verwende Apache als Reverse-Proxy für eine Tornado-Anwendung und führe derzeit einen Belastungstest der WebSockets auf dem System durch.
Da es sich noch in der Vorphase befindet, sieht der Aufbau wie folgt aus:
- Ich habe ein Node.js-Skript erstellt, das eine WebSocket-Verbindung zum Server herstellt. Sobald die Verbindung hergestellt ist, wird rekursiv eine weitere hergestellt.
- Ich führe dieses Skript mit bis zu 3000 Verbindungen von meinem lokalen Laptop aus und führe es gleichzeitig auf einem anderen Server (anderes Rechenzentrum als der WebSocket-Server) mit ebenfalls bis zu 3000 Verbindungen aus. Bis beide hochgefahren sind, sind also 6000 Verbindungen auf dem Server vorhanden.
Ich stelle fest, dass die Systemlast des Servers rasend schnell ansteigt, wenn ich es hochfahren lasse und dann plötzlich jedes Skript beende (wodurch alle 6000 Verbindungen abgebrochen werden) und dann Apache neu starte. Ich rede von 300-500 (der Server hat 16 Kerne).
Aber das Verrückte ist, dass nichts betroffen zu sein scheint. Die Ergebnisse von vmstat
und iostat
zeigen, dass Festplatte und CPU größtenteils im Leerlauf sind. Meine Apps laufen immer noch einwandfrei. Ich habe sogar eine Abfrage an meine Tornado-Anwendung, die in einer While-Schleife von meinem lokalen Computer aus ausgeführt wird.
Abgesehen von einem kleinen Schluckauf durch den Neustart scheint es auch nicht betroffen zu sein. Irgendwelche Ideen, wie ich das Problem als nächstes beheben kann?