2008-09-16 10 views
8

カスタムサーバーを作成する場合、サーバーに接続できるユーザーの最大数を特定するためのベストプラクティスまたはテクニックは何ですか。コンピュータがサポートするネットワーク接続の数

私は、コンピュータハードウェア、ネットワーク容量、およびサーバープロトコルの機能がすべて重要な要素であると考えています。

また、ネットワーク接続の数を特定の最大数のユーザーに制限することをお勧めしますか?または、サーバーがネットワーク接続の数を制限せず、応答時間が非常に長くなるまでパフォーマンスを低下させる必要がありますか?

答えて

7

はダンケーゲルは、ここでは、単一のサーバからのネットワーク接続を大量に処理するために一緒に技術の概要を置く:http://www.kegel.com/c10k.html

+0

この論文は、本当に古い(1999)とは実際に最新の状態に見えます。例えば、Linux(少なくともUbuntu)のulimitは無制限に設定されているので、32768に設定するのはおそらく必要ないでしょうか? –

5

最近のサーバーでは、非常に多数の同時接続を処理できます。私は同時に8,000以上のTCP/IPソケットを開いているシステムで作業しました。

この種の負荷を処理するには、高品質のサービスインターフェイスが必要です(libeventまたはlibevを参照)。

0

高い並行性接続の最大の欠点の1つは、実際には関係するルータです。ホームユーザー指向のルータには、通常、小さなNATテーブルがあり、ルータが実際にサーバにサービスを提供するのを妨げます。

ルーター/ネットワークインフラストラクチャの設定も同様に調べてください。

0

サーバが許可する接続の数を制限するべきではないと思います。接続を受け入れたり閉じたりする際に発生する可能性のある例外を適切にキャッチして処理してください。そのような低レベルのプログラミングは、基礎となるOSレイヤーに任せておく必要があります。つまり、サーバーの移植が容易です。

0

これは実際のオペレーティングシステムによって異なります。

別のUNIXフレーバーは他の人が32768

のような高い値を一般的なユーザーの制限は8192ですが、それは通常、高く設定することができます持っているファイルハンドル/ソケットの「無制限」の数をサポートします。

私はウィンドウがより制限されていると思いますが、サーバーのバージョンには上限があるかもしれません。

4

これは良い質問ですが、それは間違いなく状況です。あなたのコンピュータは何ですか? Quad Core Xeons、128 GBのRAM、Fibre Channel Connectivity(今買ったDell R900のようなもの)で満たされた4ソケットマシンがありますか?または、256 MBのRAMと56Kモデムを搭載したp3 550で動作していますか?各接続はサーバーにどのくらいの負荷を与えますか?どんな反応が受け入れられますか?

これらはあなたが答える必要がある質問です。答えを見つける最も良い方法は負荷テストです。あなたのコードがあなたのサーバに対して実行する予想される(そして予期しないパス)ユニットテストを作成します。これらのタスクを同時に実行する10,100,1000,10000ユーザーをシミュレートできる負荷テストフレームワークを見つけます。

これは、コンピュータがサポートできる接続数を示します。

負荷/単体テストのシナリオの大きな点は、単体テストで応答時間を予測し、応答時間外になるまで負荷を増やすことができることです。 Y秒の応答でX人のユーザーをサポートする必要がある場合は、負荷テストでそれを実証することができます。

関連する問題