カスタム サーバーを作成する場合、サーバーに同時に接続できるユーザーの最大数を決定するためのベスト プラクティスまたはテクニックは何ですか?
コンピュータ ハードウェアの機能、ネットワーク容量、およびサーバー プロトコルのすべてが重要な要素になると思います。
また、ネットワーク接続の数を特定の最大ユーザー数に制限することは良い習慣だと思いますか? または、サーバーがネットワーク接続の数を制限して、応答時間が非常に長くなるまでパフォーマンスを低下させないようにする必要がありますか?
カスタム サーバーを作成する場合、サーバーに同時に接続できるユーザーの最大数を決定するためのベスト プラクティスまたはテクニックは何ですか?
コンピュータ ハードウェアの機能、ネットワーク容量、およびサーバー プロトコルのすべてが重要な要素になると思います。
また、ネットワーク接続の数を特定の最大ユーザー数に制限することは良い習慣だと思いますか? または、サーバーがネットワーク接続の数を制限して、応答時間が非常に長くなるまでパフォーマンスを低下させないようにする必要がありますか?
Dan Kegel は、単一のサーバーからの大量のネットワーク接続を処理するためのテクニックをまとめました: http://www.kegel.com/c10k.html
それは良い質問であり、それは間違いなく状況に応じたものです。あなたのコンピュータは何ですか?クアッド コア Xeon、128 GB の RAM、およびファイバー チャネル接続 (購入したばかりの Dell R900 のペアなど) を備えた 4 ソケット マシンをお持ちですか? それとも、256 MB の RAM と 56K モデムを搭載した p3 550 で実行していますか? 各接続がサーバーに与える負荷はどれくらいですか? どのような対応が認められますか?
これらはあなたが答える必要がある質問です。答えを見つける最善の方法は、負荷テストを行うことだと思います。コードがサーバーに対して実行する予想される (場合によっては予想外の) パスの単体テストを作成します。これらのタスクを同時に実行する 10、100、1000、10000 人のユーザーをシミュレートできる負荷テスト フレームワークを見つけてください。
これにより、コンピューターがサポートできる接続の数がわかります。
負荷/単体テスト シナリオの優れた点は、単体テストに応答時間の期待値を設定し、応答時間の範囲外になるまで負荷を増やすことができることです。Y 秒の応答で X 人のユーザーをサポートする必要がある場合は、負荷テストでそれを実証できます。
同時実行性の高い接続における最大の後退の1つは、実際には関係するルーターです。ホームユーザー指向のルーターには通常、小さなNATテーブルがあり、ルーターが実際にサーバーに接続を提供するのを防ぎます。
ルーター/ネットワークインフラストラクチャの設定も同様に調査してください。
サーバーが許可する接続の数を制限するべきではないと思います。接続を受け入れたり閉じたりするときに発生する可能性のある例外を適切にキャッチして処理するだけで、問題はありません。そのような低レベルのプログラミングは、基盤となるOSレイヤーに任せる必要があります。そうすれば、サーバーを簡単に移植できます。
これは実際にはオペレーティングシステムによって異なります。
さまざまなUnixフレーバーは、「無制限」の数のファイルハンドル/ソケットをサポートします。他のフレーバーは、32768のような高い値を持ちます。
通常のユーザー制限は8192ですが、通常はこれより高く設定できます。
Windowsの方が制限が厳しいと思いますが、サーバーのバージョンには制限が高い可能性があります。