Webserver Benchmark mit dem Apache Benchmark Tool ab

2010-04-03 - kostaki 3 Kommentare »

Einen Webserver zu Benchmarken ist gar nicht so einfach, da der Unterschied zwischen einer Ladezeit von 0,1 oder 0,05 Millisekunden nur schwer messbar ist und für den einzelnen User auch nicht wirklich einen Unterschied macht. Interessant wird es aber wenn man 100 oder 1000 User gleichzeitig auf der Seite hat, da sich dann jede Millisekunde die man spart bezahlt macht. Wichtig sind Benchmarks auch für das Testen neuer Einstellungen. Wie will man sonst zeitnah wissen ob die Anpassung etwas gebracht hat? Für das Benchmarken von Webservern gibt es einige Tools, aber das verbreitetste ist wohl das Apache Tool ab, da es mit dem Apache ausgeliefert wird. Hier nun eine kurze Erklärung des Tools.

Man kann entweder eine bestimmte Zeit so viele Anfragen wie möglich senden und dann die Anzahl an Anfragen gegenüber halten, oder man stellt eine definierte Anzahl an Anfragen und überprüft die Zeit die nötig war um sie auszuführen. Wichtig ist das man die richtige Datei zum testen benutzt. Will man die Auslieferung von Statischem Content Benchmarken, dann reicht es eine simple HTML Datei oder ein Bild zu benutzen. Möchte man die allgemeine PHP Performance Benchmarken, reicht dies nicht. Da muss schon wenigstens der PHP Interpreter mit einbezogen werden. Hierfür reicht es eine einfache "Hallo Welt" Anwendung zu benutzen. Man kann natürlich auch eine Seite einer Website Bechmarken, dann sollte man aber andere Abhängigkeiten wie Datenbankverbindungen beachten.

Die wichtigsten ab Optionen sind diese:

  • -n requests Anzahl an Anfragen die ausgeführt werden sollen
  • -c concurrency Anzahl an gleichzeitigen Verbindungen die benutzt werden sollen
  • -k Benutzt HTTP KeepAlive

Beispiele

Eine URL 10000 mal mit 10 gleichzeitigen Verbindungen

$ ab -n 10000 -c 10 http://IP-OR-DOMAIN/test.php

Eine URL 10000 mal mit 10 gleichzeitigen Verbindungen und KeepAlive

$ ab -k -n 10000 -c 10 http://IP-OR-DOMAIN/test.php

Ausgabe

Die für den Benchmark relevanten Zeilen sind markiert.

$ ab -n 10000 -c 10 http://IP-OR-DOMAIN/test.php

Benchmarking IP-OR-DOMAIN (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software:        Apache/2.2.9
Server Hostname:        IP-OR-DOMAIN
Server Port:            80

Document Path:          /test.php
Document Length:        11 bytes

Concurrency Level:      10
Time taken for tests:   4.425 seconds
Complete requests:      10000
Failed requests:        19
   (Connect: 0, Receive: 0, Length: 19, Exceptions: 0)
Write errors:           0
Non-2xx responses:      19
Total transferred:      1662540 bytes
HTML transferred:       121400 bytes
Requests per second:    2259.80 [#/sec] (mean)
Time per request:       4.425 [ms] (mean)
Time per request:       0.443 [ms] (mean, across all concurrent requests)
Transfer rate:          366.90 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       1
Processing:     0    4  57.9      1    2023
Waiting:        0    4  57.9      1    2023
Total:          0    4  57.9      1    2023

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      1
  80%      1
  90%      1
  95%      1
  98%      2
  99%      2
 100%   2023 (longest request)

Man sollte den Aufruf einige male wiederholen.

Related Links

  1. 3 Kommentare

  2. apache bechmark
    schrieb am 15.02.2013 um 12:13 Uhr

    ab ist im übrigen im Paket apache2-utils enthalten.

    aptitude install apache2-utils

  3. Marcus
    schrieb am 12.06.2013 um 19:59 Uhr

    Ich weiß nicht, ob das so praxisgerecht ist. 10.000 Anfragen von 10 Clients? Hmm…

  1. Trackback(s)

  2. Sep 7, 2010:Linux: Webserver Benchmark mit dem Apache Benchmark Tool ab | Crazy little things to blog

Kommentar schreiben

*

*