Frage

Ich versuche, eine andere Anwendung zu testen, indem viele Datei-Downloads anfordern.

So begann ich 10 WebClient Instanzen mit folgenden Code, scheint aber kann ich nur 5 bei gleichzeitig ausgeführt werden.

class Program
{
    public static object locker = new object();
    public static void Main(string[] args)
    {
        for (int i = 0; i < 10; i++)
            start(i);
        Console.ReadLine();
    }

    private static void start(object row)
    {
        DateTime start = DateTime.Now;
        WebClient client = new WebClient();
        client.Credentials = CredentialCache.DefaultNetworkCredentials;
        client.DownloadProgressChanged += (sender, e) => {
            lock (locker){
                double throughput = e.BytesReceived / 
                    (DateTime.Now - start).TotalSeconds / 1024 / 1024;
                double error = 1 - (1 / throughput);
                Console.SetCursorPosition(0, (int)row);
                Console.WriteLine(
                    @"({0}) {1:HH\:mm\:ss.ffff} - {2:0.00}Mb - " + 
                    @"{3:##0}% - {4:0.00}Mb/s ({5:+0.00%;-0.00%;0.00%}){6}",
                    row, DateTime.Now, e.BytesReceived / 1024 / 1024,
                    e.ProgressPercentage, throughput, error, "       ");
            }
        };
        client.DownloadFileAsync(
            new Uri("http://site/Download.ashx?Id=123"),
            String.Format("c:\\foo_{0}.xxx", row));
    }
}

Ich habe folgende Ausgabe:

(0) 14:51:07.1830 - 39,00Mb - 5% - 0,94Mb/s (-6,45%)
(1) 14:51:06.8610 - 39,00Mb - 5% - 1,00Mb/s (+0,24%)
(2) 14:51:06.5650 - 39,00Mb - 5% - 0,99Mb/s (-1,34%)
(3) 14:51:07.2810 - 38,00Mb - 5% - 0,95Mb/s (-5,12%)
(4) 14:51:06.5740 - 37,00Mb - 5% - 0,95Mb/s (-5,19%)
(5) 14:50:30.4640 - 0,00Mb - 100% - 0,01Mb/s (-12690,64%)
(6) 14:50:30.5390 - 0,00Mb - 100% - 0,01Mb/s (-12845,38%)
(7) 14:50:30.8380 - 0,00Mb - 100% - 0,01Mb/s (-13909,70%)
(8) 14:50:30.6150 - 0,00Mb - 100% - 0,01Mb/s (-12988,80%)
(9) 14:50:30.9210 - 0,00Mb - 100% - 0,01Mb/s (-14079,53%)

Kann ich diese Grenze ändern, um mehr gleichzeitigen Benutzer zu simulieren?

War es hilfreich?

Lösung

Starten Sie alle 10 von der gleichen Maschine? Überprüfen Sie Ihre Ereignisprotokoll. Wenn Sie in anderen Dingen hinzufügen, die eine Verbindung halten können, können Sie für TCP / IP in die Grenze von 10 Verbindungen laufen auf XP auferlegt und höher.

Andere Tipps

Ein Grund dafür könnte sein, dass Ihr Server (ASP.NET als die .ashx Erweiterung), in dem Sie Dateien herunterladen von nur Prozesse 4 Anfrage parallel.

Sie können dies in Ihrer web.config Datei ändern.

Sie müssen die max Verbindungen zum Server in der Konfigurationsdatei erhöhen

<system.net>

<connectionManagement>

    <add address=“*“ maxconnection=“100“ />

</connectionManagement>

</system.net>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top