Hallo,
um einen Server testweise zu belasten, soll ich einige tausend Anfragen an den Server schicken, wobei etwa 20 Anfragen gleichzeit gesendet werden sollen. Also mit Threads.
Ich bin gerade beim Ausprobieren, frage mich aber wie ich das realisiere.
Mein Ansatz wäre
for (int i = 0; i < 20; i++)
{
Thread t = new Thread(new ThreadStart(NextRequest));
t.Start();
}
// ..
private int index = 0;
private void NextRequest()
{
if (index <requests.Length) {
SendServerRequest(requests[index++]);
Thread.Sleep(50);
// Thread.t = new Thread(new ThreadStart(NextRequest));
}
}
Aber jetzt komme ich irgendwie raus, weil so werden ja nur die 1. 20 Requests zeitgleich gesendet. Muss ich am Ende der Methode NextRequest() jetzt die Zeile
Thread.t = new Thread(new ThreadStart(NextRequest));
entkommentieren? Oder ist das schlecht angesetzt?
Etwas nicht tun zu können, ist kein Grund etwas nicht zu tun.
-Alf
Hallo Cpt_Future,
noch nicht mal die ersten 20 Request werden gleichzeitig gesendet, weil die Threads ja nacheinander gestartet werden. Anonsten verstehe ich das Problem nicht ganz.
herbivore
Schau dir mal das an:
Naja gut, der Start den Threads kann ich ja nur sequentiell starten.
Etwas nicht tun zu können, ist kein Grund etwas nicht zu tun.
-Alf
Einige tausend Anfragen, 20 Anfragen gleichzeitig.
Das hast du doch schon fast: 20 Threads, jeder sendet in einer Schleife, sagen wir, 500 Anfragen.
Dass die Threads minimal verzögert starten, spielt bei Webzugriffen keine Rolle. Wenn doch, könnte man die Threads direkt nach dem Start an einem WaitHandle blockieren und dann gleichzeitig(er) loslaufen lassen.
Gruss
Pulpapex