Optimale Einstellungen für APC
Eingetragen von Anonymous (0)
am 14.01.2013 - 12:08 Uhr in
am 14.01.2013 - 12:08 Uhr in
Hallo,
ich setze auf meinen Drupal-Seiten APC sein, um eine vernünftige Geschwindigkeit zu erreichen. Bis jetzt nutzt ich APC mit den Standardeinstellungen und es läuft auch recht gut.
Sollte man die Einstellungen von APC für Drupal verändern, damit es noch besser läuft?
Die APC-Version ist 3.1.14-dev und dazu die aktuelle Version des APC-Modul für Drupal.
Gruß Phasenkasper
- Anmelden oder Registrieren um Kommentare zu schreiben
So mache ich das
am 16.01.2013 - 20:03 Uhr
Hallo,
hier ein paar Anmerkungen dazu aus meinem Drupal-Notizbuch, vielleicht hilft Dir das weiter. Kurzfassung:
- Cache auf 64 MB setzen
- Drupal Modul nicht erforderlich
Zweck von APC:
PHP-Skripte (Module, Includes, Templates) werden im Speicher gecacht, damit wird die Ausführung deutlich beschleunigt. Zu diesem Zweck gibt es die PECL PHP Erweiterung "apc".
Installation in neueren Ubuntu-Versionen:
sudo apt-get install php-apc
Bei anderen Debian-Versionen geht das mit sudo pecl-install apc!
Das installiert die Erweiterung. Das mitgelieferte Skript "apc.php" (in /usr/share/php/apc.php) kann als Statusmonitor verwendet werden. Dazu kopiert man es z.B. in das Webroot, und editiert es, um die Zugangsdaten zu ändern (!). Danach kann man den Status von APC unter http://example.com/apc.php jederzeit einsehen.
Konfiguration:
Die Konfiguration kann über die php.ini vorgenommen werden, besser ist allerdings eine eigene Konfigurationsdatei in /etc/php5/conf.d, namens apc.ini. Dort wird die Erweiterung geladen und konfiguriert:
extension = apc.so
apc.xyz =
...
Der entscheidende Hebel ist die Größe des APC Cache-Segments, standardmäßig 32 MB. Das scheint für Drupal mit vielen aktivierten Modulen etwas zu knapp zu sein. Damit Drupal optimal läuft, empfiehlt sich eine Vergrößerung auf 64 MB, in der apc.ini:
apc.shm_size = 64 (Achtung, das "M" weglassen, gilt nur für ältere APC-Versionen)
Aber dieser Wert sollte möglichst identisch sein mit dem Systemwert für Shared Memory Segments, der standardmäßig niedriger liegt. Anzeigen lässt er sich mit
sudo ipcs -lm
Wenn die "Maximale Segmentgröße (KByte) nicht 65536 sein sollte, muss diese hoch gesetzt werden, z.B. so:
sudo sysctl kernel.shmmax=67108864
Apache neu starten, auf der Drupal-Seite rumturnen, und dann mal in die Statistik schauen:
http://example.com/apc.php
Unter "View Host Stats" sieht man die Cache-Belegung und Trefferquote, unter "System Cache Entries" kann man sehen, welche PHP-Skripte sich im Cache befinden.
Alle Infos zur Konfiguration gibt es hier:
http://www.php.net/manual/en/apc.configuration.php
Anmerkung zur Variablen apc.stat:
Es wird oft empfohlen, diese auf "0" zu setzen, aber das ist auf einem Entwicklungsserver keine gute Idee - Änderungen an Skripten werden dann nämlich erst nach einem Neustart erkannt. Bei einem Produktionsserver dagegen kann das Verbesserungen bringen.
Es gibt ein Drupal Modul "apc", http://drupal.org/project/apc. Dieses hat mit dem Skriptcaching nichts zu tun, sondern es dient dazu, Drupal Cache Tabellen über APC zu cachen, also z.B. die Tabelle cache_views in den User Cache von APC zu legen. Das macht vor allem Sinn mit kleineren oft angesprochenen Cache-Tabellen, hat aber vermutlich keinen allzu großen Effekt, da diese ja schon über den SQL-Cache gepuffert werden sollten.
Hey drubb, danke für die
am 17.01.2013 - 09:03 Uhr
Hey drubb,
danke für die ausführliche Erklärung. Ich setze APC auch schon lange ein aber hatte die Konfiguration nicht optimiert. Aufgrund deines Posts habe ich mich nun mal rangesetzt und die Paramter hochgesetzt. Standard war bei 32 (MB) - in den Stats hatte ich aber fast 100 Prozent Misses.
Nun auf 384 hochgesetzt und apc.max_file_size auf 3 (MB) .... den Apache neu gestartet und .... TURBO :-)
Der Zugriff war (meiner Meinung nach) bisher schon recht zügig aber jetzt ist die ganze Sache spürbar schneller geworden. Fast so als wenn man vom Traktor auf den Porsche umgesteigen ist :-)
Danke!!!!
Gruß Matthias
Drupal rockt!!!