22

私は、broadcast.emit を実装する Web サイトを取得しました。サイトのすべてのユーザーにメッセージを送信します。これは socket.io の最も単純な実装ですが、現在問題が発生しています。約100人の同時ユーザーに当たったとき。nodejs サーバーは、ハングするまで遅延し始め、Web サイト全体にアクセスできなくなります。サーバーを確認したとき。nodejs は CPU の 100% を使用しています。それは正常ですか?

socket.io は何人のユーザーをサポートできるのでしょうか? そして、このことが起こったときに、プログラムでnodejsサーバーを再起動する方法はありますか?

4

3 に答える 3

20

私はマルチプレイヤーカードゲームを持っています。Socket.io は、約 3000 人の同時ユーザーで CPU を使い果たします。これはIntel i7 CPU上にあります。このため、負荷を処理するために複数の node/socket.io プロセスを実行する必要があります。

100 の同時接続の場合は問題ありません。おそらく、いくつかの VPS を使用しており、CPU は他のすべての VM と共有されていますか? 専用サーバーを実行していますか?

また、コードを確認してください。非同期にすべきいくつかのことを同期的に行っている可能性があります。

于 2012-09-12T12:26:33.927 に答える
17

少なくとも 250,000 の同時接続 (ほとんどのユース ケースでは、ボトルネックはメモリです)

于 2012-04-15T15:12:02.387 に答える
3

メッセージをドロップせずにすべてのクライアントに配信することが重要ですか?いいえの場合、socket.volatile.emit呼び出しを使用することを提案します。リモートクライアントと不安定な接続には多くの問題が発生する可能性があります。

于 2012-04-15T19:50:29.110 に答える