3

次のようなタスクを含むスレッド プールのサイズを決定するための基本的な規則は何ですか。

  • 常にネットワークにバインドされています。
  • 異なるスループットとレイテンシで外部サービスにアクセスします。

私の主な関心事は、帯域幅を最適に使用することです (つまり、タスクを連続して処理しないでください。ただし、1200 のネットワーク接続も開かないでください)。

4

2 に答える 2

1

ネットワーク アクセスは同期ですか、それとも非同期ですか?

ネットワーク アクセスとリクエスト処理が非同期の場合、スレッド プールのサイズは => 利用可能なコア数 + 1 になります。

更新:利用可能なコアとは、システムで利用可能な物理プロセッサの数を意味します。サーバーが非同期 I/O を使用して複数の物理プロセッサを利用する場合でも、スレッド プールが必要です。

ネットワーク アクセスと要求処理が同期している場合、スレッド プールのサイズを決定するための厳格なルールはありません。この場合、常にスレッド プール サイズを構成可能にすることをお勧めします。リクエスト処理が CPU バウンドでない場合、デフォルト値のゲストは次のようになります。

(リクエスト処理のレイテンシー/ネットワークのレイテンシー) * (使用可能なコアの数 + 1)、最大値は 4 * 使用可能なコアの数。

于 2009-07-15T10:23:47.407 に答える
0

私は専門家ではありませんが、タスクごとに 1 つのスレッドを持つべきではありませんか? スレッドは、データが利用可能になるまでブロック/ポーリングします。接続を待機している場合は、接続ハンドラで各接続を処理するスレッドを開始します。

于 2010-07-13T15:28:06.363 に答える