Frage

Ich brauche ein Web-Formular zu testen, die eine Datei-Upload dauert. Die Dateigröße in jedem Upload wird etwa 10 MB groß sein. Ich möchte testen, ob der Server über 100 gleichzeitige Uploads verarbeiten kann, und noch bleiben anspricht, um den Rest der Seite.

Wiederholte Form Einreichungen aus unserem Büro wird von unserer lokalen DSL-Leitung begrenzt werden. Der Server ist Offsite mit höherer Bandbreite.

basierend Antworten auf Erfahrung wären toll, aber alle Vorschläge sind willkommen.

War es hilfreich?

Lösung

Mit dem ab (Apachebench) Kommandozeilen-Tool, das ist mit Apache gebündelt (Ich habe gerade diese große kleine Tool entdeckt). Im Gegensatz zu curl oder wget, Apachebench wurde für die Durchführung Stresstests auf Webservern konzipiert (jede Art von Web-Server!). Es erzeugt auch Statistiken viel. Mit dem folgenden Befehl wird ein senden HTTP POST-Anforderung einschließlich der Datei test.jpg http://localhost/ 100-mal, mit bis zu 4 gleichzeitigen Anforderungen.

ab -n 100 -c 4 -p test.jpg http://localhost/

Es erzeugt eine Ausgabe wie folgt aus:

Server Software:        
Server Hostname:        localhost
Server Port:            80

Document Path:          /
Document Length:        0 bytes

Concurrency Level:      4
Time taken for tests:   0.78125 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Non-2xx responses:      100
Total transferred:      2600 bytes
HTML transferred:       0 bytes
Requests per second:    1280.00 [#/sec] (mean)
Time per request:       3.125 [ms] (mean)
Time per request:       0.781 [ms] (mean, across all concurrent requests)
Transfer rate:          25.60 [Kbytes/sec] received

Connection Times (ms)
          min  mean[+/-sd] median   max
Connect:        0    0   2.6      0      15
Processing:     0    2   5.5      0      15
Waiting:        0    1   4.8      0      15
Total:          0    2   6.0      0      15

Percentage of the requests served within a certain time (ms)
  50%      0
  66%      0
  75%      0
  80%      0
  90%     15
  95%     15
  98%     15
  99%     15
 100%     15 (longest request)

Andere Tipps

Selenium RC Ihre Lieblingssprache. Start 100 Themen von Selen, die jeweils einen Pfad der Datei im Eingabe eingeben, und klicken Sie senden.

Sie könnten 100 sequentiell benannten Dateien erzeugen über sie zu machen Looping Einfach aufzunehmen, oder verwenden Sie einfach die gleiche Datei immer und immer wieder

Ich würde Sie vielleicht führen zu cURL und nur random stuff einreichen (wie, lesen 10MB aus /dev/urandom und kodieren sie in base32), durch eine POST-Anfrage und fabrizieren manuell den Körper eine Datei-Upload zu sein (es ist nicht Rakete Wissenschaft).

Gabel das Skript 100-mal, vielleicht über ein paar Servern. So stellen Sie sicher, dass sysadmins nicht denken, Sie eine DDoS tun, oder etwas:)

Leider bleibt diese Antwort ein wenig vage, aber hoffentlich hilft es Ihnen, die von Ihnen in der richtigen Spur stupste.

Fortsetzung nach Liams Kommentar:
Wenn der Server die Uploads Empfang nicht im selben LAN ist wie die Kunden mit diesem verbunden ist, wäre es besser, als Remote-Knoten wie möglich für die Stresstests zu bekommen, wenn nur das Verhalten so authentisch wie möglich zu simulieren. Aber wenn Sie keinen Zugang zu Computern außerhalb des lokalen LAN haben, das lokale LAN ist immer besser als gar nichts.

Stresstests aus dem Inneren der gleichen Hardware wäre keine gute Idee, wie Sie doppelte Last auf dem Server tun würde: die Zufallsdaten Herauszufinden, es Verpackung, es über das TCP / IP-Stack (obwohl wahrscheinlich nicht über Ethernet zu senden ) und nur dann kann der Server seine Magie zu tun. Wenn das Sendeteil ausgelagert wird, erhalten Sie die doppelte Leistung durch das Aufnahmeende (mit einem beliebigen Größe Körnchen Salz).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top