あなたは間違っています。Websocket ベースのソリューションは 5K の同時接続に限定されません。
Facebook Newsroomによると、2013 年 9 月の 1 日のアクティブ ユーザー数は平均で約 7 億 2,700 万人、または毎分約 50 万 4,000 人のユニーク ユーザーが Facebook ページにアクセスしています。平均訪問時間が 18 分 ( statisticbrain.comによる調査) の場合、通知インフラストラクチャは、約 900 万 (18*504k) の同時 TCP 接続を 24 時間年中無休で処理できる必要があります。この数値は非常に大まかな概算ですが、そのようなシステムを構築する場合に、彼らが何を扱っているか、また何を処理しなければならないかについて、かなりのアイデアを与えてくれます。
ロング ポーリングと WebSocket を使用して、リアルタイム通知システムを構築できます。どちらの場合も、OS に関連する同様の問題に直面します(説明は Unix ベースのシステム用です)。
- ポートの制限により、1 つの tcp リスナー ソケットは、リッスンしている同じ IP/ポートで 2^16 接続しか受け入れられないため、複数のポートや複数の IP アドレスでリッスンする必要があります。
- memory、開いているすべての接続は、少なくとも 1 つのファイル記述子を使用します
最新の Linux ボックスが持つことができるオープン TCP 接続の理論上の最大数は何ですかの制限について詳しくは、こちらをご覧ください。
ロングポーリングと Websockets:
ロング ポーリング ソリューションのすべてのポーリングには、新しい HTTP 要求が必要です。これには、Websocket 接続を維持するために必要な帯域幅よりも多くの帯域幅が必要です。さらに、通知は HTTP 応答として返され、新しいポーリング要求が発生します。Websocket ソリューションは、帯域幅とシステム リソースの消費という点ではより効率的ですが、ブラウザ サポートの欠如という大きな欠点があります。
手元の統計にもよりますが、websocket のみのソリューションでは、訪問者の約 20 ~ 40% が無視されます ( statscounter.comの統計)。このため、「物理的な」基礎となるトランスポート モデルから接続の概念を抽象化するさまざまなサーバー ライブラリが開発されました。その結果、最新のブラウザーは websocket を使用して接続を作成し、古いブラウザーは代替トランスポート (HTTP ロング ポーリング、jsonp ポーリング、フラッシュなど) にフォールバックします。そのようなライブラリの顕著な例は、Sock.jsとSocket.ioです。