Fehlgeschlagene Anfragen nach Länge in meinem ApacheBench-Lasttest-Ergebnis
Ich habe eine website in PHP, Lighttpd. Es nutzt auch MySQL auf Centos 5. Getestet hab ich meine PHP-code unten mit Apache Bench (ab). Es führte zu einigen Fehlern (Fehlgeschlagene Anfragen) zeigt andere Länge als normal. Ich bin absolut sicher, dass meine PHP-Ergebnis sollte immer die genaue Länge. Ich habe überprüft, meine Lighttpd und MySQL-logs und error-logs und keine Fehler dort.
Gibt es eine Möglichkeit, genau zu prüfen, was ab bekommt als Ergebnis hat andere Länge oder gibt es einen anderen Weg, um herauszufinden, was ist die Ursache oder was ist "schlechtes" Ergebnis?
Ich muss das wissen, weil ich 100% gute Ergebnisse.
-bash-3.2# ab -n 500 -c 200 http://domain.com/test/index.php
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking domain.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Finished 500 requests
Server Software: lighttpd/1.4.20
Server Hostname: domain.com
Server Port: 80
Document Path: /test/index.php
Document Length: 15673 bytes
Concurrency Level: 200
Time taken for tests: 0.375862 seconds
Complete requests: 500
Failed requests: 499
(Connect: 0, Length: 499, Exceptions: 0)
Write errors: 0
Total transferred: 7920671 bytes
HTML transferred: 7837000 bytes
Requests per second: 1330.28 [#/sec] (mean)
Time per request: 150.345 [ms] (mean)
Time per request: 0.752 [ms] (mean, across all concurrent requests)
Transfer rate: 20579.36 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 10 9.4 6 30
Processing: 0 113 133.5 16 342
Waiting: 0 111 134.3 12 341
Total: 0 123 138.9 16 370
Percentage of the requests served within a certain time (ms)
50% 16
66% 235
75% 289
80% 298
90% 331
95% 345
98% 365
99% 368
100% 370 (longest request)
InformationsquelleAutor der Frage Tomasz Smykowski | 2009-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laufen
ab
mit der-v 2
parameter, Bedeutung für die Ausführlichkeit auf 2. Dies wird dump die Antwort-Header. Wenn Ihre Anfragen nicht mit chunked-encoding, sehen Sie einen "Content-Length" - header, der angibt, die Größe jeder Antwort.Wenn Ihre Antworten verwenden, chunked-encoding, dann die Länge ist nicht bekannt, bis die übertragung endet. In der Regel chunked-encoding ist nur für komprimierte Antworten, und ApacheBench nicht die Komprimierung standardmäßig.
Wenn es ist komprimieren die Antworten aus irgendeinem Grund, dass könnte es erklären; die komprimierte Länge kommt auf die Inhalte an.
Können Sie auch
curl -i
und die--compress
option, um die Antwort-Header einer einzelnen Anforderung mit und ohne Kompression.InformationsquelleAutor der Antwort Tim Sylvester
Benutzen Sie tcpdump
Öffnen, qty 2-terminal/shell-Fenster oder Bildschirm.
In das erste Fenster, benutzen Sie tcpdump, um zu erfassen übertragung von Daten von/zu Ihrer Netzwerkkarte (eth0) auf eine Datei:
In das zweite Fenster, das Feuer aus Ihren ab-Befehl:
Wenn das alles getan, parse die Datei mit strings und grep:
Sollten Sie in der Lage sein, zu beobachten, alle Daten-Segmente von dort durch eyeballing oder grep ' Ing Ergebnisse.
InformationsquelleAutor der Antwort randy melder
ab wird davon ausgegangen, dass alle Antworten sind die gleichen. Sieht es bei den content-length-von der ersten Antwort, und vergleicht dann den anderen zu.
Aus der man-page:
Also, wenn Sie Ihre erste Anfrage enthält folgende Daten:
Und die nächste ist:
ab tritt ein Fehler mit einer Länge Fehler, denn die Ausgabe ist ein Zeichen mehr.
InformationsquelleAutor der Antwort Tom