1000 gleichzeitige Anfragen simulieren ?

tomtom

Registered User
Hallo,

ich habe da mal eine Frage.
Gibt es die Möglichkeit, bei einem Webserver die Performanz zu testen?

Ich nutz zum Anzeigen der System-Performanz den Applications Manager 7 , was soweit auch super läuft.
Kann ich jetzt irgendwie 1000 gleichzeitige Anfragen simulieren um mal zu sehn was passiert?


THX,

Gruss Thomas
 
Das ist momentan wohl der Dauerbrenner hier im Forum...

Apache bringt da schon was von Hause aus mit:
Code:
ab2 --help

huschi.
 
ab2

Ich habe es mit ab2 --help gemacht... guter TIP! :)


Ich habe "Failed requests: 132" bei 1000 requests.

Gibt es da irgend wo Vergleichswerte?

Code:
Server Port:            80

Document Path:          /
Document Length:        1708 bytes

Concurrency Level:      1
Time taken for tests:   17.268617 seconds
Complete requests:      1000
Failed requests:        132
   (Connect: 0, Length: 132, Exceptions: 0)
Write errors:           0
Total transferred:      2205919 bytes
HTML transferred:       1707919 bytes
Requests per second:    57.91 [#/sec] (mean)
Time per request:       17.269 [ms] (mean)
Time per request:       17.269 [ms] (mean, across all concurrent requests)
Transfer rate:          124.73 [Kbytes/sec] received
 
Gibt es da irgend wo Vergleichswerte?

Kannst du kg mit cm vergleichen?
Jeder Server hat eine andere Config und auf jedem Server laufen andere Scripte und haben eine unterschiedliche Datenbankgröße/aufbau. Solche Werte zu vergleichen ist sinnlos. Dieses Benchmark Tool hat eigentlich den Zweck, dass du deine Config verbessern kannst bzw. herausfinden kannst, bis zu welcher Auslastung dein Server noch in einer vernünftigen Zeit antwortet.
 
du hast den Benchmark mit diesen Werten laufen lassen
Code:
ab -n 1000 -c 1 http://www.name.de/
also 1 offene Client Verbindung mit 1000 Requests.

Angenommen deine Seite hat 20 .gif Bilder und ein PHP Counter Script mit MySQL. Requests wären das dann, 1x HTML Datei, 20 x gif Bild, 1 x PHP, 1 x schreiben in MySQL Tabelle. Zusammen wären das ~ 23 Requets. Da ich nicht genau weiss, wass das PHP Script (Counter) alles sonst noch macht, runden wir grosszügig auf 50 Requests auf. Jeder Besucher (offene Verbindung) verursacht pro Seitenaufruf ~ 50 Requests.

Wir wollen nun wissen wieviele Seitenaufrufe der Server gleichzeitig schafft, also wieviele gleichzeitige offene Verbindungen mit jeweils 50 Requets.
Code:
ab -n 50 -c 100 http://www.name.de/
Wichtiger Wert für uns ist (unten) 99% mit z.B. 2000 ms

d.h. der Server kann gleichzeitig 100 Seitenaufrufe mit jeweils 50 Requests bearbeiten. Wartezeit pro Aufruf ist maximal 2 Sekunden (2000 ms).

Hab bei mir z.B. my.cnf Variablen so optimiert, dass der Server 100 Verbindungen mit 100 Requests noch innerhalb 2000 ms bearbeiten kann ohne dass die privvmpages im roten Bereich sind (kein RAM mehr vorhanden). Zuerst hatte ich max_connections sehr hoch auf 100 und buffers, caches sehr klein. Das ging dann voll in die Hose.

Hab dann max_connections = 5 und die buffers, caches so gross, das tuning-primer.sh Script keine Beanstandungen hat. Server konnte dann tatsächlich 100 Seitenaufrufe gleichzeitig ausreichend schnell (2000 ms) bearbeiten und RAM (privvmpages) blieb im grünen Bereich. ( hatte Putti zweimal laufen, einmal für Benchmark und einmal für CPU load und Beancounters.)

MySQL + Apache Performance Tuning

httpd.conf könnte dann so aussehen
Code:
Timeout = 30
KeepAlive = On
MaxKeeAliveRequests = 1000
KeepAliveTimeout = 2
pro offener Verbindung bearbeitet der Server bis 1000 Requests (sendet alle .gif Bilder, HTML Datei, Flash o.ä.). Zwei Sekunden nach letztem Requests wird die Verbindung geschlossen. d.h. klickt der Besucher nach Seitenaufbau nicht innerhalb zwei Sekunden auf einen Link, beendet der Server die Verbindung.
 
Last edited by a moderator:
das mit der Anzahl der Requests sollte man sich mal genauer anschauen. Frage wäre z.B. wieviele Requests ein Forum beim Aufruf verursacht.

1 x HTML
1 x PHP?
1 x MySQL aus Tabelle(n) lesen?
n x Grafiken wie Logo, Buttons, Icons, Smilys (da kommen schnell 100 Requests zusammen!)

oder wäre das Lesen jeder Tabelle ein eigener Request?

ect.
 
Last edited by a moderator:
Back
Top