0

外部システムに約 200,000 のソケットを作成し、そのソケットを介してトラフィックを生成し、いくつかのパフォーマンス メトリックを作成する必要があるカスタム アプリケーション用の Linux ベースのテスト ツールを開発しています。

私が疑問に思っているのは、Linux でこれを行う最善の方法です。まず、200,000 個のソケットを持つには、確実に FD の制限に達します。(非常に強力なマシンで) FD 制限をこれほど高くすることはできますか? または、Linux インスタンスごとに取得できる妥当な最大値はどのようなものでしょうか?

また、そのようなツールを実装するための最も簡単な最初の考えは、テスト クライアントごとに 1 つのスレッドであり、接続の作成、トラフィックの送信、パフォーマンスの測定などを行います。カーネル内のスレッドの最大数はどのようなものでしょうか? それとも、複数のワーカー スレッドでエンドポイントのサブセットを処理する方が理にかなっているでしょうか?

これは 1 つの Linux 実装を使用して可能ですか、それとも複数のサーバーに分割することが唯一のオプションですか?

4

1 に答える 1

2

この問題は「C10K」と呼ばれ、10,000 接続が問題でなくなったときに拡張されました。グーグルでたくさんの情報を見つけることができます。

強力な Linux マシン (4 CPU、16GB RAM) では、1M に到達できるはずです。

このような量の開いているファイル記述子を処理する最も簡単な方法は、poll. ただし、ホストの制限を拡張する必要があります。

  • ulimits
  • ファイル記述子のカーネル数
  • ソケットバッファのサイズ

C500K 問題のドキュメントを参照してください

于 2013-08-28T20:44:22.543 に答える