200.000 の同時接続で 4 コアの Amazon EC2 インスタンス (m3.xlarge) をリソースの問題なしで実行しています (各コアは 10-20%、メモリは 2/14GB)。とにかく、CPUコアで最初に接続されたすべてのユーザーにメッセージを送信すると、ミリ秒以内にメッセージを取得しますが、最後に接続したユーザーは1〜3秒の遅延でメッセージを取得し、各CPUコアは1〜2秒間100%になります. この問題は、「わずか」50k の同時ユーザー (コアあたり 12.5k) でも気付きました。
遅延を減らすには?
redis-adapter を mongo-adapter に変更してみましたが、違いはありませんでした。
このコードを使用して、複数の CPU コアでスティッキー セッションを取得します。
https://github.com/elad/node-cluster-socket.io
テストは非常に単純でした。クライアントは接続するだけで、それ以上何もしません。サーバーはメッセージをリッスンするだけで、すべてに送信します。
編集: 50,000 クライアントでクラスター/アダプター ロジックを使用せずにシングル コアをテストしましたが、結果は同じでした。
サーバー、シングルコアサーバー、ベンチマーク、および html クライアントを 1 つのパッケージで公開しました: https://github.com/MickL/socket-io-benchmark-kit