2016-06-22 5 views
0

Mit einem Nodejs Server und Client mit socket.io kann ich 14k Clients verbinden lassen. Etwas weniger sogar bei Verwendung von Clustering.Verbindungslimit in socket.io

Weder CPU noch RAM sind erschöpft. Außer dem automatischen Ping, das socket.io selbst ausführt, werden keine Daten übertragen.

Der Transport ist so eingestellt, nur 'Websocket' zu verwenden, keine Abfrage!

Mehr Clients scheitern nur mit dem Grund "Timeout".

Was könnte das verursachen?

Ich könnte verstehen, wenn die Maschine nicht stark genug ist. Aber dann würde ich erwarten, dass der Server die Clients nach dem Zufallsprinzip absetzt und nicht jedes Mal, wenn ich es versuche, auf einem bestimmten Wert bleibt.

Edit: Dies ist unter Windows mit Web-Sturm, ich werde auf einer Linux-Maschine testen, wenn ich kann.

+1

Vielleicht ist dieses Problem mit socket.io zu Ihrem Problem verwandt: https://github.com/primus/primus/issues/355 – Jasper

+0

Leider nein, ein anderes Programm in C# mit normalen TCP-Sockets geschrieben hat dieses Problem nicht. Auch wenn ich Clustering verwende, ist die Anzahl ohne Grund niedriger. – riki

Antwort

0

Ich hatte ein ähnliches Problem beim Testen https://www.codiva.io mit socket.io. Das Problem dort war die Begrenzung der Anzahl der offenen Dateideskriptoren und somit der Anzahl der Ports. Es war in Ubuntu Linux, wo das Standardlimit um 4k war. Dies könnte damit zusammenhängen.

+0

Auf der Windows-Maschine, die ich teste, kann ich 16k + Verbindungen öffnen, wenn ich sowohl Server als auch Client in C# schreibe. – riki

0

Dieser Artikel können Ihnen auf dem Weg helfen: http://drewww.github.io/socket.io-benchmarking/

ich die gleiche Frage gewundert, so landete ich einen kleinen Test zu schreiben up (XHR-Polling), um zu sehen, wenn die Verbindungen gestartet hinter fehlschlagen (oder fällt). Ich fand (in meinem Fall), dass die Sockets bei etwa 1400-1800 gleichzeitigen Verbindungen zu agieren begannen.