Wie analysiere ich ein Apache Bench-Ergebnis?

7

Ich benötige Hilfe bei der Analyse eines Protokolls von Apache Bench:

Benchmarking texteli.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:
Server Hostname:        texteli.com
Server Port:            80

Document Path:          /4f84b59c557eb79321000dfa
Document Length:        13400 bytes

Concurrency Level:      200
Time taken for tests:   37.030 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      13524000 bytes
HTML transferred:       13400000 bytes
Requests per second:    27.01 [#/sec] (mean)
Time per request:       7406.024 [ms] (mean)
Time per request:       37.030 [ms] (mean, across all concurrent requests)
Transfer rate:          356.66 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       27   37  19.5     34     319
Processing:    80 6273 1673.7   6907    8987
Waiting:       47 3436 2085.2   3345    8856
Total:        115 6310 1675.8   6940    9022

Percentage of the requests served within a certain time (ms)
  50%   6940
  66%   6968
  75%   6988
  80%   7007
  90%   7025
  95%   7078
  98%   8410
  99%   8876
 100%   9022 (longest request)

Was können mir diese Ergebnisse sagen? Sind 27 U / min nicht zu langsam?

Alan Hoffmeister
quelle

Antworten:

13

Wenn Sie Auslastungstests ausführen, ist es im Allgemeinen kein guter Weg, eine beliebige Zahl auszuwählen und Ihren Server zu treffen. Sie haben lediglich bewiesen, dass Ihr Server 200 gleichzeitige Besucher verarbeiten kann, solange es ihnen nichts ausmacht, ~ 7 Sekunden auf das Laden ihrer Anforderung zu warten. Was Sie wahrscheinlich tun möchten, ist:

  1. Stellen Sie zunächst eine Basislinie fest. Verwenden Sie 1 Besucher (Parallelität von 1).
  2. Zweitens, fangen Sie an, die Zahlen zu erhöhen. Zum Beispiel 1, 10, 25, 50, 100, 125, 150, 200 usw.
  3. Stellen Sie schließlich sicher, dass diese Anforderungen über einen längeren Zeitraum ausgeführt werden (dh starten Sie sie nicht einfach und starten Sie sie dann).

Sobald Sie Ihre Ergebnisse erhalten haben, stellen Sie sie grafisch dar: Anzahl der Besucher im Vergleich zu durchschnittlichen Anforderungszeiten, einschließlich maximaler und minimaler Balken. Grundsätzlich ist das Testen der Last einer beliebigen Anwendung nur so nützlich wie relevante Tests. Wenn in diesem Fall beispielsweise 1 Besucher 6 Sekunden benötigt, um eine Seite zu laden, dann klingt 7 Sekunden pro Seite für 200 Besucher nicht schlecht, oder?

Andrew M.
quelle
Das ist eine gute Antwort. Aber wie kann ich die tatsächliche Nutzung messen? Ich meine, meine App verfügt über Web-Sockets und Ruheendpunkte. Wie kann ich das Limit des Benutzers messen, das meine App haben kann, bevor ich über die Skalierung nachdenke?
Alan Hoffmeister
Dafür müssen Sie wahrscheinlich in ein anpassbareres Framework für Loadtests investieren. Zu Beginn müssen Sie jedoch die Benutzermuster verfolgen. Das heißt, ich habe festgestellt, dass Ihre Website eine Startseite hat und wie ein Backend klingt. Ich würde also davon ausgehen, dass durchschnittlich 50% Ihrer Treffer für Ihr Frontend und 50% für Ihr Backend bestimmt sind. Mit einem realen Lasttest-Framework (Schleifer, Multi-Mechanisierung usw.) können Sie dies sehr einfach testen.
Andrew M.
1

Sie können beginnen, indem Sie eine Startanzahl von Anforderungen und eine Anzahl von gleichzeitigen Anforderungen festlegen und die Ergebnisse wie folgt überprüfen:

- Total Number of Requests per seconds
- Average Time Per Request
- Average waiting / processing / connecting times

Anschließend können Sie sie vergrößern, indem Sie die Anzahl der gleichzeitigen Verbindungen erhöhen, bis Sie die erwartete Anzahl von Benutzern erreicht haben. Beobachten Sie die Antwort Ihres Dienstes und wiederholen Sie sie so oft, überprüfen Sie die Zeitabweichung und nehmen Sie den Durchschnitt

Hany Hassan
quelle