1,000,000のWebSocketを開いたままにしておくために保持されるシステムリソースはいくつですか?[閉まっている]


122

WebSocketは良いですが、1,000,000の同時接続を処理できるでしょうか?
1,000,000のWebSocketを開いたままにしておくために保持されるシステムリソースはいくつですか?

回答:


65

更新された回答

短い答え:はい、しかしそれは高価です。

長い答え

WebSocketは根本的に長命のTCPソケットであり、HTTPのようなハンドシェイクとメッセージの最小限のフレーミングであるため、この質問はWebSocketに固有のものではありません。

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

接続の数は主要な問題ではありません(これは、ほとんどの場合、カーネルのチューニングと十分なメモリの問題です)。これらの接続のそれぞれに対するデータの処理と送受信です。着信接続が長期間にわたって広がっており、それらがほとんどアイドル状態であるか、静的データの小さなチャンクをほとんど送信していない場合、おそらく1,000,000の同時接続よりもはるかに多くなる可能性があります。ただし、これらの状況(ほとんどがアイドル状態の低速接続)でも、多数の接続を処理するように構成および設計されていないネットワーク、サーバーシステム、およびサーバーライブラリで問題が発生します。

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

サーバーを構成し、多数の接続をサポートするようにサーバーソフトウェアを作成する方法を読むための、古いがまだ適用可能なリソースを次に示します。


1
単一のJVMで約1200万のソケット接続が可能です。彼らはそれをやった方法を参照してくださいmrotaru.wordpress.com/2013/10/10/...
ジャック・Koortsを

@JacquesKoorts thx
BG BRUNO

159

今日のシステムでは、100万の同時TCP接続の処理は問題になりません。

私たち自身のテストに基づいてそれを確認できます(完全な開示:私はLightstreamerのCTOです)。

一部のお客様には、1つのボックスで100万の接続に到達できることを何度も示す必要がありました(必ずしもスーパーモンスターマシンではありません)。ただし、これはAmazon EC2で実行された最近のテストであるため、500Kの同時接続をテストした構成を要約します。

Lightstreamer Server(特にWebSocketサーバー)をm2.4xlargeインスタンスにインストールしました。これは、8コアと68.4 GiBメモリを意味します。

11台のクライアントマシンを立ち上げ、Lightstreamerサーバーへの500,000の同時接続を作成しました。テストは、サーバーからの合計アウトバウンドスループットが90,000更新/秒になるように構成され、その結果、450 Mbit /秒のアウトバウンド帯域幅のピークが発生しました。

サーバーは13 GiBを超えるRAMを使用することはなく、CPUは60%前後で安定していました。

少なくとも30 GiBのRAMがあれば、100万の同時ソケットを処理できます。必要なCPUは、必要なデータスループットによって異なります。


7
私はこれがLinuxの味だと思っています。カーネルの調整方法に関する追加情報を教えていただけませんか?最大ファイル記述子/ tcpウィンドウサイズなど?
quixver 2014年

14
それはバニラAmazon Linuxでした。最大ファイル記述子が増加しました。TCP送信バッファーが1600バイトに減少しました(手動で調整できますが、デフォルトでLightstreamerによって行われます)。MSSがデフォルトでした。
アレッサンドロアリノン2014年

このソフトは完全に無料ですか、それを使用するためにいくらかの料金が必要ですか?
Avtandil Kavrelishvili 2018

@AvtandilKavrelishvili:無料版と有料版の両方があります。
アレッサンドロアリノーネ2018

WebSocketの代わりに定期的なポーリングを使用すると、サーバーでの作業が簡単になりますか?
mFeinstein
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.