3

500台のクライアントが同時に接続し、無期限に接続できるサーバーインフラストラクチャを作成したいと思います。計画では、クライアントをサーバー上のTCP / IPソケットに接続し、接続を維持します。サーバーはクライアントにランダムにデータを送信し、クライアントはサーバーにランダムにデータを送信します。これは、小さなMMOGと同様ですが、データはほとんどありません。 。各クライアントからの15〜30秒ごとのTCPポーリングと比較して、この計画を思いつきました。

私の質問は、これらの接続を開いたままにしておくと、アイドル時にサーバー帯域幅の使用量が大量に発生するのでしょうか?これは、TCPの本質に踏み込むことなく、最善のアプローチですか?

4

2 に答える 2

1

TCPは、「キープアライブ」が有効になっている場合に頻繁に(デフォルトは2時間)数バイトを使用する場合を除いて、アイドル時に帯域幅を使用しません。

500接続は何もありませんが、epoll()システムのオーバーヘッドを減らすための良い選択です。5000接続が問題になり始める可能性があります。

于 2012-10-02T17:49:29.603 に答える
0

帯域幅はあなたの主な関心事ではありませんが、開くことができる接続の数には制限があります(それはかなり高いですが)。

しかし、15秒ごとのポーリングが十分に高速である場合、接続を開いたままにしておくのは無駄だと思います。

于 2012-10-02T11:04:29.843 に答える