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=32M
apc.include_once_override=0
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:
- 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
- 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.
Problemlösungen
Problem mit Drupal 7:
Für Drupal 7 ist die Einstellung apc.include_once_override=0 zu setzen.
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: https://de2.php.net/manual/de/ref.apc.php