APC Optimierung APC richtig konfigurieren

alex's picture

Wie man APC installiert, kannst Du unter APC installieren nachlesen.
Die Standardkonfiguration von APC wird über die php.ini festgelegt. Dies könnte beispielsweise so aussehen:

extension="apc.so"
apc.enabled=1
apc.file_update_protection=2
apc.optimization=0
apc.shm_size=32
apc.shm_segments=1
apc.gc_ttl=7200
apc.ttl=7200
apc.num_files_hint=1024
apc.enable_cli=0

APC liefert ein PHP Skript mit, welches Informationen über das Cacheverhalten ausgibt. Im Sourceverzeichnis von APC liegt eine Datei namens apc.php. Öffne diese Datei und passe die Konfiguration an (das ist für die Authentifizierung notwendig). Danach kopiere einfach die Datei ein Verzeichnis, mit dem Du über den Webserver die Datei aufrufen kannst. Auf der Übersichtsseite siehst Du eine Grafik "Memory Usage"; wenn die auf 100% steht, ist das ein Zeichen, dass Du mehr Cache Speicher zuweisen solltest.

Mit apc.shm_size wird festgelegt, wie viel Speicher als Cache verwendet wird. Um herauszufinden, welche Einstellung zulässig ist (das hängt vom Betriebssystem ab), geht man wie folgt vor:

1. Mit dem Befehl "ipcs -lm" lässt man sich die aktuellen Werte ausgeben:

----- Gemeinsamer Speicher: Grenzen -----
Maximale Anzahl der Segmente = 4096
Maximale Segmentgröße (KByte) = 32768
Maximaler gesamter gemeinsamer Speicher (Seiten) = 2097152
Minimale Segmentgröße (Bytes) = 1

2. Information aus dem /proc Verzeichnis mit "cat /proc/sys/kernel/shmmax":

33554432

Diese würde z.B. bedeuten, dass maximal 32768KB = 32MB mit APC verwendet werden kann. Der Wert aus dem /proc Verzeichnis (in Byte) sollte mit der maximale Segmentgröße des ipcs Befehls übereinstimmen. Falls diese Werte aus irgendeinem Grund nicht übereinstimmen, sollte man sich an dem niedrigeren der beiden orientieren.

Für größere Webseiten / Portale wird sehr wahrscheinlich kein 32MB großer Cache ausreichen. Falls Linux in der aktuellen Systemkonfiguration nicht mehr Speicher zulässt, kann dies natürlich angepasst werden (dies ist nicht mit einem Webhosting Paket möglich!).
Wenn z.B. die Shared-Memory-Grenze von 32MB auf 128MB angehoben werden soll, tragen Sie folgende Zeilen in die "/etc/sysctl.conf" ein:

kernel.shmall = 134217728
kernel.shmmax = 134217728

Nach einem Sytem-Neustart werden diese Einstellungen automatisch aktiv oder gib folgende Befehlt ein (dann erspart Du Dir den Restart):
sysctl -p /etc/sysctl.conf

Ok, das war es. Mit der oben beschriebenen Anleitung kann überprüft werden, ob nun auch wirklich 128MB verfügbar sind und dann die APC Konfiguration angepasst werden.

Unsere Buchempfehlung

Image of High Performance MySQL. Optimierung, Datensicherung, Replikation & Lastverteilung
Autor: Baron Schwartz, Peter Zaitsev, Vadim Tkachenko, Jeremy D. Zawodny
Verlag: O'Reilly
Verkaufsrang: 139996
Das folgende Buch befasst sich ausführlicher mit dem hier genannten Thema. Wenn Du mehr über High Performance MySQL. Optimierung, Datensicherung, Replikation & Lastverteilung erfahren willst, empfehlen wir Dir diesen Artikel.

Problem mit Skripten:
Falls einige Skripte Probleme mit APC machen, können diese mit der Option apc.filters ausgeschlossen werden.

Das "Weiße-Seiten-Problem"
Wenn man mit dem Einsatz von APC häufiger sporadisch eine leere Seite (weiße Seite) angezeigt bekommt, anstelle des eigentlichen Inhaltes, hat das meist folgende Ursachen:

  • die Shared-Memory-Grenze vom Betriebssystem ist niedriger als die konfigurierte Cachegröße von APC
    => Abhilfe: die Shared-Memory-Grenze des Systems muss höher oder gleich der konfiguierten Cachegröße von APC sein
  • eine zu niedrige Cachegröße von APC
    => Abhilfe: APC mehr Cache zuweisen. Alternativ kann man auch mit mehreren Segmenten arbeiten, was aber hier mit APC Version 3.10 nicht funktioniert.

Die komplette Dokumentation kann im PHP Manual gefunden werden: http://de2.php.net/manual/de/ref.apc.php

Alle hier aufgeführten Informationen / Dokumentationen sind nur als Denkanstoß gedacht und wurden mit großer Sorgfalt erarbeitet. Es besteht jedoch kein Anrecht auf Vollständigkeit / Richtigkeit. Der Autor kann für eventuell verbliebene fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Gleiches gilt für entstandene Schäden bei unsachgemäßer Ausführung! Im Zweifelsfall immer einen Fachmann mit der Durchführung beauftragen!

Gerne bieten wir Ihnen hierfür unsere Consulting Dienste an. © Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten.