2013-03-20 8 views
7

ユーザーがコラボレーションできるリアルタイムアプリを作成することを検討します。このタイプの問題の解決策の1つにnode.js + socket.ioが見つかりました。ボトルネックにソケットが付いていますか?

私のサーバーがユーザーに与えるソケットの数だけボトルネックがあると他の開発者から聞きました。そのため、同時に数百人のユーザーが協力していると、オープンソケットの数が不足し、ユーザーは接続できなくなります。これは有効な懸念事項ですか?

更新:関連するノートで私はSocket.ioの代わりにSockJSを使用したいと考えています。これらのライブラリのthread that explains pros and consがあります。またthis is a good read

+0

JSがそこに最速の言語ではありません。あなたがJSを窒息することがあるなら、C++のソリューションはあなたのスループットを簡単に4倍にすることができます。問題はあなたが持っているソケットの数ではありませんが、時間内にそれらを処理することはできますか。 – dtech

+2

プロセスが開くことができるファイルディスクリプタ(ソケットを含む)の数は、通常は 'ulimit'(シェル内)または' sysctl'(システムワイド、まだ'ulimit'も必要です)。 – robertklep

答えて

1

すでにsolutions using this approach like Cloud9があり、正常に動作しています。スケールアウトする必要があるポイントがあります。あなたが何か大きいものを計画しているなら、私はそれについて考えるでしょう。

Here are some tests on sockets.io同時接続数10,000。良い解決策だと思われますが、フォールバックメカニズムのために簡単な解決策ではありません。

4

数百人のユーザーにとって、私はそれが心配ではないと思います。

あなたが知っているソケットは、クライアントとサーバーの間に永続的な接続を持ち、両当事者はいつでもデータの送信を開始できます。それらをオープンに保つことは、1秒あたりに送信されるメッセージの負荷を処理することと同じくらい問題ではありません。

Socket.ioは1000の同時接続を簡単に処理できます。しかし、1秒間に8-10​​kメッセージを超えるメッセージを送信すると失敗します。あなたのソケットが使い尽くされる前に、荷物の障壁に当たるでしょう。ほとんどの場合、より多くの同時ユーザーを処理すると、負荷が高くなります。だから、ソケットが少なくなるのを心配しないでください。その障壁を超えて拡張しようとすると、より多くのサーバーリソースが必要になります。

参考リンク:

  1. Socket.IO - are the open connections a concern?
  2. http://www.quora.com/How-do-I-scale-socket-io-servers-2
関連する問題