APC: Turbo für PHP Webseiten

APC: Turbo für PHP Webseiten

Im Gegensatz zu anderen Programmiersprachen werden PHP-Skripte während des Aufrufs kompiliert, d.h. in eine ausführbare Form übersetzt und ausgeführt. Dieser Prozess wird bei jedem einzelnen Aufruf der Datei wiederholt. Das ist wenig effizient und lässt sich mit verschiedenen Mitteln leicht ändern.
APC ist ein so genannter “Opcode Cache”. Die Aufgabe von APC ist es, sich den aufwendigen Kompiliervorgang für spätere Zugriffe zu merken, damit dieser nur einmal ausgeführt werden muss. Bei jedem weiteren Aufruf der Datei liegt diese bereits vorkompiliert im Arbeitsspeicher.

Wie viel schneller wird meine Webseite?

Als Beispiel habe ich die Performance einer unserer WordPress-Installationen gemessen. Mit dem Tool Apache Bench (alternativ http_load oder jmeter) kann man ermitteln wie oft eine Webseite in einem festgelegten Zeitraum aufgerufen werden kann. Daraus ergibt sich die Geschwindigkeit der Webseite in der Einheit “Aufrufe pro Sekunde” (Requests per second). Je höher diese Zahl, desto schneller ist die Webseite. Oder anders herum, desto mehr Anfragen können je Zeiteinheit bearbeitet werden.

Test 1: WordPress mit standard PHP
[special_para]ab -t 60 -c 20 http://SysEleven.de/
Time taken for tests: 60 seconds
Complete requests: 341
Requests per second: 5.66 [#/sec]

[/special_para]

Test 2: WordPress mit aktiviertem APC
[special_para]ab -t 60 -c 20 http://SysEleven.de/
Time taken for tests: 60 seconds
Complete requests: 1294
Requests per second: 21.57 [#/sec]

[/special_para]

Ein Fazit

WordPress ist mit APC knapp viermal schneller als ohne. Aber: Wie viel schneller eine Webseite tatsächlich wird, hängt von der verwendeten Software ab. Wichtig: Nicht jede Software ist kompatibel zu APC, aber ein Versuch lohnt sich allemal.
Die Auslastung des Caches und die Erfolgsquote (Hits/Misses) ist, stellt APC in Diagrammen dar:

Alternativen

Neben APC gibt es noch eAccelerator und XCache. Performancemäßig nehmen die drei sich wenig, welche Software man einsetzt ist eher Geschmacksache bzw. eine Frage der Kompatibilität – was mit dem einen Cache nicht kompatibel ist, wird mit einem anderen vielleicht doch funktionieren. Das hartnäckige Gerücht, Zend Optmizer gehöre auch dazu, ist übrigens falsch. Zend Optimizer “optimiert” zwar den Quellcode, ist aber kein Cache und merkt sich diese Verbesserungen nicht. Im Gegenteil: Die gleiche Arbeit wird bei jedem Aufruf erneut ausgeführt. Aus Sicht der Performance ist das wenig förderlich, weil es durch die ständige Mehrarbeit die Ausführung von PHP sogar noch verlangsamen kann.

Links

http://de.php.net/manual/de/book.apc.php
http://www.zend.com/de/community/php
http://eaccelerator.net/
http://xcache.lighttpd.net/
http://httpd.apache.org/docs/2.2/programs/ab.html

Share this post

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.