In Zeiten wie diesen wird es immer wichtiger die Ladezeiten einer Webseite zu optimieren. Natürlich in erster Linie, um dem User die beste Experience zu gewährleisten. Und in weiterer Instanz natürlich für Google, da die Website-Performance auch in das Suchmaschinen Ranking einfließt.
Doch bevor man anfängt wild „herumzuoptimieren“ und diverse Tools auszuprobieren, sollte man sich im ersten Schritt Gedanken machen wie man die Performance eigentlich messen kann.
- Wieviele Anfragen kann mein Webserver gleichzeitig verarbeiten?
- Welche Geschwindigkeit hat mein Webserver bei einem Aufruf einer Webseite?
Apache liefert bei der Serverinstallation ein tolles Tool mit, welches sich „Apache HTTP server benchmarking tool“ (kurz: „ab“ oder „ab2“) nennt. Dieses kann verwendet werden um mehrere und vor allem gleichzeitige Anfragen auf Webservern zu simulieren. Man könnte jetzt viele Worte darüber verlieren was das Programm macht und kann, aber am besten sieht man es an einem Praxisbeispiel.
Apache Benchmark (ab) installieren:
Der Apache Benchmark wird mit dem Webserver mit installiert. Wer auf einem System den Webserver nicht extra installieren möchte, kann die apache2-utils verwenden.
[bash]apt-get install apache2-utils[/bash]Webseiten Performance messen mit Apache Benchmark
Was gibt es zu beachten?
1) Der Server, welcher den Benchmark durchführt, sollte ein anderen sein, als der, der die Webseite hosted. Idealerweise ein dedizierter Root Server mit ordentlich Power.
2) Ihr solltet bei den Tests eine gute Internet Bandbreite zur Verfügung haben.
3) Die Tests sollten immer von dem selben Server/Rechner durchgeführt werden.
4) Macht mehrere Durchläufe (mind. 5, besser 10) und errechnet den Durchschnittswert.
Ich verwende für den Apache Benchmark folgenden Befehl:
[bash]ab -c 20 -n 200 http://www.sysadminslife.com/[/bash]-c Anzahl der gleichzeitigen Verbindungen (20)
-n Anzahl der Anfragen, welche ausgeführt werden (200)
http://www.sysadminslife.com/ gibt die Webseite an, welche getestet wird 😉
ab hat viele weitere Einstellungsmöglichkeiten die hier sehr detailliert beschrieben sind.
TIPP: Beobachtet bei eurem Server, der die Webseite ausliefert, die CPU Last mit dem Befehl „top“ während der Benchmark läuft und seht euch die Veränderung an.
[sam id=“2″ codes=“true“]Apache Benchmark im Praxisbeispiel
Getestet wird mein Webserver (SysADMINsLife Startseite) mit den oben beschrieben Werten. Dabei erhalte ich folgendes Ergebnis:
[bash highlight=“9,15,16″]Server Software: ApacheServer Hostname: www.sysadminslife.com
Server Port: 80
Document Path: /
Document Length: 69197 bytes
Concurrency Level: 20
Time taken for tests: 15.558 seconds
Complete requests: 200
Failed requests: 0
Write errors: 0
Total transferred: 13908800 bytes
HTML transferred: 13839400 bytes
Requests per second: 12.86 [#/sec] (mean)
Time per request: 1555.802 [ms] (mean)
Time per request: 77.790 [ms] (mean, across all concurrent requests)
Transfer rate: 873.04 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 24 155 312.3 107 3236
Processing: 776 1332 296.5 1280 2651
Waiting: 47 227 210.2 148 1081
Total: 851 1487 449.5 1405 4976
Percentage of the requests served within a certain time (ms)
50% 1405
66% 1511
75% 1605
80% 1665
90% 1882
95% 2061
98% 2589
99% 4692
100% 4976 (longest request)[/bash]
Damit wir jetzt auch drastische Auswirkungen sehen können schalte ich bei meinem WordPress vorübergehen das WP-SuperCache Plugin aus. WP-Supercache ist, wie der Name schon sagt, ein sehr mächtiges Caching Plugin für WordPress, welches mir schon seit geraumer Zeit tolle Dienste erweist.
[bash highlight=“9,15,16″]Server Software: ApacheServer Hostname: www.sysadminslife.com
Server Port: 80
Document Path: /
Document Length: 69051 bytes
Concurrency Level: 20
Time taken for tests: 36.224 seconds
Complete requests: 200
Failed requests: 0
Write errors: 0
Total transferred: 13859000 bytes
HTML transferred: 13810200 bytes
Requests per second: 5.52 [#/sec] (mean)
Time per request: 3622.408 [ms] (mean)
Time per request: 181.120 [ms] (mean, across all concurrent requests)
Transfer rate: 373.62 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 24 396 1049.5 63 4460
Processing: 1079 3126 730.9 3195 5560
Waiting: 604 2518 619.8 2597 3777
Total: 1154 3522 1183.3 3344 8638
Percentage of the requests served within a certain time (ms)
50% 3344
66% 3602
75% 3787
80% 3977
90% 4673
95% 5984
98% 8052
99% 8156
100% 8638 (longest request)[/bash]
Ich denke die Zahlen sprechen absolut für sich selbst, wenn man die „Time taken for tests“, „Requests per second“ und „Time per request“ Werte miteinander vergleicht.
Hier sieht ma wie wichtig Caching Plugins für die Performance von Webseiten sind, gerade wenn diese eine MySQL oder ähnliche Datenbanken im Hintergrund haben.
Eine Optimierung und viele Tests verschiedener Caching Plugins können sich also sehr positiv auf die Geschwindigkeit einer Webseite und somit auf die SERPs auswirken.
- APC
- eAccelerator
- xCache
- Memcached
- Zend OPcache (vormals ZendOptimizer+)
Ich werde die nächsten Wochen verschiedene Kombinationen an Caching Plugins testen und die Ergebnisse hier veröffentlichen.
sehr informativ! sowas habe ich schon seit längerem gesucht. 🙂
Wenn ich mit folgendem Befehl die Geschwindigkeit Teste, sind beide Kerne mit 100% Ausgelasastet, ist das normal?
– Ein Cache Plugin wird nicht verwendet.
ab -c 20 -n 200 http://meinewebsite/
Vielen Dank für die kurze Erläuterung. Mir ist noch nicht ganz klar was genau der Unterschied zwischen den beiden Parametern -c und -n ist. Mal angenommen meine Website hat in Spitzenzeiten 500 Besucher zur gleichen Zeit. Und jeder Besucher tätigt 30 Anfragen. Wäre dies dann -c 500 und -n 30.
Vielen Dank
Marvin