1. ホーム
  2. websocket

[解決済み] 1,000,000個のウェブソケットを開き続けるために必要なシステムリソースはどれくらいですか?[クローズド]

2022-04-28 02:09:12

質問内容

Websocketもいいけど、1,000,000の同時接続に対応できるかな?

1,000,000個のwebsocketを開き続けるために、どれだけのシステムリソースを保持することになるのでしょうか?

解決方法は?

回答を更新しました

短い回答 : はい、でも高いんです。

長い回答 :

WebSocket は基本的に HTTP のようなハンドシェイクとメッセージの最小限のフレームを持つ長寿命の TCP ソケットなので、この質問は WebSocket に特有のものではありません。

つまり、1台のサーバーで1,000,000の同時ソケット接続を処理できるのか、またそのためにどの程度のサーバーリソースを消費するのか、ということです。答えはいくつかの要因によって複雑になりますが、適切なサイズのシステム(多くのCPU、RAM、高速ネットワーク)と、調整されたサーバーシステム、最適化されたサーバーソフトウェアがあれば、1,000,000の同時アクティブソケット接続は可能になります。

接続数は主要な問題ではなく(それはほとんどカーネルのチューニングと十分なメモリの問題です)、それらの接続のそれぞれに対する処理とデータの送受信です。もし、受信接続が長期間に渡って分散され、ほとんどがアイドル状態であったり、静的なデータの小さな塊を送信する頻度が少なければ、おそらく100万同時接続よりもはるかに高い値を得ることができます。しかし、そのような条件(ほとんどがアイドル状態の低速接続)であっても、大量の接続を処理するように構成・設計されていないネットワーク、サーバーシステム、サーバーライブラリでは、問題に遭遇することになります。

50万接続時のおおよそのリソース使用量については、Alessandro Alinoneの回答を参照してください。

大量の接続をサポートするために、どのようにサーバーを構成し、サーバーソフトウェアを書くかについて、古いですが、まだ適用可能なリソースをいくつかご紹介します。