1

サーバーのストレス テストの目的で、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 程度に制限されます。

4

0 に答える 0