Um aus eigener Neugier einige Lasttests auf meinem Server durchzuführen, habe ich Folgendes ausgeführt:
ab -kc 50 -t 200 http://localhost/index.php
Dies öffnet 50 Keep-Alive-Verbindungen für 200 Sekunden und knallt meinen Server nur mit Anfragen nach index.php
In meinen Ergebnissen bekomme ich:
Concurrency Level: 50
Time taken for tests: 200.007 seconds
Complete requests: 33106
Failed requests: 32951
(Connect: 0, Receive: 0, Length: 32951, Exceptions: 0)
Write errors: 0
Keep-Alive requests: 0
Total transferred: 1948268960 bytes
HTML transferred: 1938001392 bytes
Requests per second: 165.52 [#/sec] (mean)
Time per request: 302.071 [ms] (mean)
Time per request: 6.041 [ms] (mean, across all concurrent requests)
Transfer rate: 9512.69 [Kbytes/sec] received
Beachten Sie die 32951 "fehlgeschlagenen" Anforderungen. Ich kann das nicht herausfinden.
Während der Test ausgeführt wurde, konnte ich von meinem Heimcomputer aus perfekt auf meine Website zugreifen, obwohl die Ladezeiten der Seiten am Ende der Seite als 0,5 anstelle der üblichen 0,02 angegeben wurden. Ich hatte jedoch nie eine fehlgeschlagene Anfrage.
Warum meldet AB, dass die Hälfte der Verbindungen fehlschlägt? Und was bedeutet "Länge:" in diesem Zusammenhang?
benchmarking
load-testing
apachebench
Benjamin
quelle
quelle
Antworten:
Keine Ursache. Der "Längenfehler" zeigt lediglich an, dass etwa die Hälfte der Zeit die Länge der Antwort unterschiedlich war.
Da der Inhalt dynamisch ist, ist es wahrscheinlich die Sitzungskennung oder ähnliches.
quelle
Um das Problem mit anderen Worten zu beschreiben:
Das Apache-Benchmarking-Tool (ab) geht davon aus, dass die Länge des Antwortinhalts während des gesamten Tests gleich ist. Es speichert die Inhaltslänge der ersten Antwort. Wenn eine der weiteren Antworten eine andere Inhaltslänge hat, führen sie zu "Längenfehlern".
Der folgende Apache-Fehlerbericht scheint dies zu bestätigen: ASF-Fehler 42040
Zusammenfassung : Wenn Sie Inhalte mit variabler Länge bereitstellen, sollten Sie diese Art von Ab-Anforderungsfehlern wahrscheinlich ignorieren.
Bearbeiten : Ich habe kürzlich festgestellt, dass der
ab
Befehl eine neue (zumindest für mich) Option hat:Ich kann es in ab Version 2.3 <$ Revision: 1528965 $> sehen, aber nicht in ab Version 2.3 <$ Revision: 655654 $> , daher wurde es wahrscheinlich vor relativ kurzer Zeit hinzugefügt.
quelle
Es tut mir leid, eine alte Frage erneut zu beantworten, aber es war die erste, die in Google auftauchte. Manchmal wurde der von ab gemeldete Längenfehler durch ein echtes Problem verursacht: Wenn die Verbindung serverseitig geschlossen wird, bevor die im Content-Length-Header deklarierte Gesamtmenge an Bytes vom Client nicht empfangen wurde. Dies kann passieren, wenn sich zwischen dem Client und dem Server andere Parteien befinden, z. B. naive handgefertigte Load Balancer (mein Fall).
quelle