サーバーのストレス テストの目的で、HttpWebRequest を使用して多数の同時 Web 要求を送信しようとしています。
この例では、テスト対象の Web サービス メソッドは単純に 30 秒間一時停止してから戻り、キューの深さと同時要求のテストを可能にします。
クライアント ログには、次の複数の呼び出しを使用して、1 秒以内に 200 の呼び出しが正常に並列キューに入れられていることが示されています。
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.BeginGetResponse();
Fiddler は、最初の最大 80 件がサーバーに同時に送信されていることを示しており、最初の応答が返される前に、残りの最大 120 件のリクエストが約 1/秒で追加されていることを示しています。
ここからの提案に従って、有効な制限を約 10 から約 80 に増やすことができました。複数のマシン/プロセスに頼ることなく、次の障壁を取り除きたいと考えています。何か案は?
// Please excuse the blind setting of these values to find the other problem.
// These were set much higher but did not help
ThreadPool.SetMinThreads(30, 15);
ThreadPool.SetMaxThreads(30, 15);
System.Net.ServicePointManager.DefaultConnectionLimit = 1000;
そしてApp.Configで
<system.net>
<connectionManagement>
<clear/>
</connectionManagement>
</system.net>
もう 1 つのポイントは、多数の要求が実行され、単純な遅延テストの前に完了する場合、遅延テストは 80 程度を同時に達成できることです。通常、「コールド」で開始すると、約 10 程度に制限されます。