Webserver Geschwindigkeit messen (Apache Benchmark)

Gepostet am Dezember 29, 2011

Einen Benchmark für einen Webserver ist gar nicht so einfach zu realisieren, da die Ladezeit von 0,1 oder 0,05 Millisekunden nur schwer messbar ist und für den einzelnen User auch nicht wirklich einen Unterschied macht. Doch wird es interessant wenn 100 oder 1000 User gleichzeitig auf eine Seite zugreifen. Ein sehr bekanntes Tool zum messen ist ab, es wird auf einer Linux Konsole ausgeführt (der Test sollte von einem unabhängigen Linux-Server aufgerufen werden und nicht von dem zu testenden Webserver).

Folgende Möglichkeiten zu Messung gibt es:
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.

Wichtige Gunrdvoraussetzung:
Wichtig ist das man die richtige Datei zum testen benutzt.

– bei statischen Content reicht eine html-Datei oder ein Bild auf dem Server aus
– für PHP muss der PHP Interpreter mit einbezogen werden, eine Datei mit folgenden Inhalt würde dazu ausreichen

1
<?php echo "Hallo Welt!"; ?>

– für PHP + MySQL sollte eine Datei mit Datenbankanfrage erstellt werden

Welche Optionen bietet der „ab“-Benchmarktest
-n requests Anzahl an Anfragen die ausgeführt werden sollen
-c concurrency Anzahl an gleichzeitigen Verbindungen die benutzt werden sollen
-k Benutzt HTTP KeepAlive

Beispiel

Eine URL 10000 mal mit 10 gleichzeitigen Verbindungen

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

Eine URL 10000 mal mit 10 gleichzeitigen Verbindungen und KeepAlive

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

Ergebnis

Der Test dauert ein paar Sekunden und dann erscheint eine Übersicht mit Serverzeiten:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
Finished 10000 requests
 
 
Server Software:        Apache/2.2.8
Server Hostname:        schmidtmarcel.de
Server Port:            80
 
Document Path:          /test.php
Document Length:        10 bytes
 
Concurrency Level:      10
Time taken for tests:   41.914778 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      3250000 bytes
HTML transferred:       100000 bytes
Requests per second:    238.58 [#/sec] (mean)
Time per request:       41.915 [ms] (mean)
Time per request:       4.191 [ms] (mean, across all concurrent requests)
Transfer rate:          75.70 [Kbytes/sec] received
 
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       19   20   0.5     20      25
Processing:    19   21   0.8     21      42
Waiting:       19   20   0.9     21      41
Total:         39   41   0.9     41      63
WARNING: The median and mean for the waiting time are not within a normal deviation
        These results are probably not that reliable.
 
Percentage of the requests served within a certain time (ms)
  50%     41
  66%     42
  75%     42
  80%     42
  90%     42
  95%     42
  98%     43
  99%     43
 100%     63 (longest request)

Die für den Benchmark relevanten Zeilen sind „Time taken for tests“ und „Time per request“.

Tags: , , ,

Leave a Reply

 

Posts of Current Category



Facebook: