wake-up-neo.com

Load Testing mit AB ... gefälschte fehlgeschlagene Anfragen (Länge)

Um 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 erhalte 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 einwandfrei auf meine Website zugreifen, obwohl die Ladezeiten der Seiten am unteren Seitenrand mit .5 anstelle der üblichen .02 angegeben wurden. Ich hatte jedoch noch nie eine fehlgeschlagene Anfrage.

Warum meldet AB, dass die Hälfte der Verbindungen fehlschlägt? Und was bedeutet "Länge:" in diesem Zusammenhang?

Vielen Dank

201
Franky

Keine Ursache. Der "Längenfehler" zeigt lediglich an, dass sich die Länge der Antwort etwa zur Hälfte unterschied.

Da die Inhalte dynamisch sind, handelt es sich wahrscheinlich um die Sitzungskennung oder ähnliches.

351
Franky

So beschreiben Sie das Problem mit anderen Worten:

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 aufweist, führt dies zu "Längenfehlern".

Der folgende Apache-Fehlerbericht scheint dies zu bestätigen: ASF Bug 4204

Zusammenfassung : Wenn Sie Inhalte mit variabler Länge bereitstellen, sollten Sie diese Art von Ab-Anforderungsfehlern wahrscheinlich ignorieren.

Bearbeiten : Ich habe kürzlich bemerkt, dass der Befehl ab eine neue (zumindest für mich) Option hat:

-l   Accept variable document length (use this for dynamic pages)

Ich kann es in ab Version 2.3 <$ Revision: 1528965 $> sehen, aber nicht in ab Version 2.3 <$ Revision: 655654 $> , also wurde es wahrscheinlich erst vor relativ kurzer Zeit hinzugefügt.

122
Dariusz Walczak

Es tut uns leid, eine alte Frage erneut zu beantworten, aber es war die erste, die in Google aufgetaucht ist. Manchmal kann der von ab gemeldete Längenfehler durch ein echtes Problem verursacht worden sein: Wenn die Verbindung serverseitig geschlossen wird, bevor die im Header "Content-Length" angegebene Gesamtanzahl von Bytes nicht vom Client empfangen wurde. Dies kann vorkommen, wenn sich zwischen Client und Server andere Parteien befinden, z. B. naive handgefertigte Load Balancer (mein Fall).

8
zentrunix