Webseiten beschleunigen mit APC Cache

phpLangsame Webseiten sind nicht nur bei Besuchern unbeliebt, auch Google straft mittlerweile langsame Server ab und listet sie bei Suchergebnissen nur noch weiter unten.

Neben der Optimierung des Datenvolumens z.B. durch Bilderkomprimierung bietet sich bei Benutzung von dynamischen PHP Seiten der Einsatz eines Caches auf dem Server an.

Ich nutze APC unter Debian Lenny.

Der Alternative PHP Cache (APC) ist ein Open-Source-Zusatzmodul für PHP, das eine beschleunigte Ausführung von PHP-Programmen ermöglicht. Die Beschleunigung wird dadurch erreicht, dass der kompilierte PHP-Quelltext zwischengespeichert wird und bei wiederholter Ausführung das zeitaufwändige Kompilieren nahezu vollständig vermieden werden kann.

Die Installation ist binnen 5 Minuten erledigt und die Performance der Webseiten spürbar verbessert.

Zunächst messen wir die Geschwindigkeit vor der Installation um eine Vergleichsmöglichkeit zu habe:

#ab -c5 -n100 http://www.weltverschwoerung.de/forum.php

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.weltverschwoerung.de (be patient)…..done

Server Software:        Apache
Server Hostname:       
www.weltverschwoerung.de
Server Port:            80

Document Path:          /forum.php
Document Length:        63048 bytes

Concurrency Level:      5
Time taken for tests:   44.566 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      6351995 bytes
HTML transferred:       6304800 bytes
Requests per second:    2.24 [#/sec] (mean)
Time per request:       2228.302 [ms] (mean)
Time per request:       445.660 [ms] (mean, across all concurrent requests)
Transfer rate:          139.19 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    5  27.5      0     186
Processing:   437 2175 1718.4   1869   16514
Waiting:      422 2104 1705.6   1775   16498
Total:        437 2180 1716.5   1878   16514

Percentage of the requests served within a certain time (ms)
  50%   1878
  66%   2203
  75%   2480
  80%   2582
  90%   3151
  95%   3664
  98%   7803
  99%  16514
100%  16514 (longest request)

Dann installieren wir APC:

# apt-get install php-apc

Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut
Lese Status-Informationen ein… Fertig
Die folgenden Pakete wurden automatisch installiert und werden nicht länger benötigt:
  libevent1 libfcgi0ldbl portmap
Verwenden Sie »apt-get autoremove«, um sie zu entfernen.
Die folgenden NEUEN Pakete werden installiert:
  php-apc
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 8 nicht aktualisiert.
Es müssen noch 0B von 59,3kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 180kB Plattenplatz zusätzlich benutzt.
Wähle vormals abgewähltes Paket php-apc.
(Lese Datenbank … 77519 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacke php-apc (aus …/php-apc_3.0.19-2_i386.deb) …
Richte php-apc ein (3.0.19-2) …

Das war es auch schon. Nun kann man erneut die Perfomance der Webseite messen und sollte eine deutliche Verbesserung feststellen:

#  ab -c5 -n100 http://www.weltverschwoerung.de/forum.php

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.weltverschwoerung.de (be patient)…..done

Server Software:        Apache
Server Hostname:       
www.weltverschwoerung.de
Server Port:            80

Document Path:          /forum.php
Document Length:        63056 bytes

Concurrency Level:      5
Time taken for tests:   27.288 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      6352400 bytes
HTML transferred:       6305600 bytes
Requests per second:    3.66 [#/sec] (mean)
Time per request:       1364.401 [ms] (mean)
Time per request:       272.880 [ms] (mean, across all concurrent requests)
Transfer rate:          227.33 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:   292 1334 1652.1    890   13276
Waiting:      283 1317 1648.9    884   13268
Total:        292 1334 1652.1    890   13276

Percentage of the requests served within a certain time (ms)
  50%    890
  66%   1127
  75%   1491
  80%   1603
  90%   2315
  95%   4183
  98%   7375
  99%  13276
100%  13276 (longest request)

Wie man sieht war die Aktion von Erfolg gekrönt.

Das Konfigurationsfile sieht so aus – diese Einstellungen sind in den meisten Fällen ausreichend:

#vi /etc/php5/apache2/conf.d/apc.ini
extension = apc.so
apc.enabled = 1
apc.shm_size = 48
apc.include_once_override = 1
apc.mmap_file_mask = /tmp/apc.XXXXXX

Ein grafisches Frontend installiert man, indem man die Datei apc.php in sein Webverzeichnis kopiert:

#cp /usr/share/doc/php-apc/apc.php /var/www/vhosts/weltverschwoerung.de/httpdocs/apc.php

Voila – so sollte es dann aussehen:

APC INFO - Google Chrome_2011-01-08_22-49-27

Wenig Aufwand für eine Geschwindigkeitsoptimierung in dieser Größe, oder?


Schlagwörter: , ,

Über Kai

Internetjunkie, Angestellter, IT-Freak, Student, Unternehmer und Provinzblogger. Auch zu finden bei Twitter, Facebook und Xing.