私は、Webサービスをテストするために、多くの同時ユーザー(> 2000)をシミュレートしようとしています。多くのparrallel WebRequestsを送信
- ユーザーA:9時10分02秒、午前9時10分03秒、午前9時10分08秒
- ユーザB:9:10すべてのユーザーは、例えば、特定の事前定義された時間にアクションを実行します:03、午前九時十分05秒、9時10分07秒
- ユーザーC:午前9時10分03秒、9時10分09秒、9時10分15秒、午前9時10分20秒
Iそれぞれの時間にリアルタイムでWebリクエストを送信したいと考えています。私は最大でも約2秒の遅延を許容することができます。私はすでに成功せずにしようとしていた:
a)の集計を時間でソート単一のリスト内のすべての時間、それはそれを反復:
foreach (DateTime sendTime in times) {
while (DateTime.now < sendTime)
Thread.Sleep(1);
SendRequest();
}
b)の各スレッドのチェックと、各ユーザーのスレッドを作成します。上記と同じ条件で長時間の睡眠時間の場合
どちらの方法も近づきますが、要求が送信されるはずの時間と実際に送信された時間の差が大きすぎます。より精度の高い要求を送信する方法はありますか?
編集:アプローチは本当にうまくいっています。しかし、遅延は依然として多くの要求に対して非常に高い。 Apparantly、この理由は、私のsendRequest()メソッドです:私のWebサービスは、任意の応答を返さない
private static async Task SendRequest()
{
// Log time difference
string url = "http://www.request.url/newaction";
WebRequest webRequest = WebRequest.Create(url);
try
{
WebResponse webResponse = await webRequest.GetResponseAsync();
}
catch (Exception e) { }
}
注意、多分これはスローダウンした理由は何ですか?回答を待たずにリクエストを送信できますか?
とご質問がありますか? –
私はより具体的な質問を追加しました – aseipel