Beste APC-Einstellungen zur Verkürzung der Seitenausführungszeit


16

Ich habe Drupal 7, APC mit PHP-FPM und Apache hinter Lack und 512 MB RAM.

Ich messe die Ausführungszeit einer Seite mit dem Entwicklungsmodul.

Die Datenbankabfragezeit ist niedrig (62 ms) im Vergleich zur Seitenausführungszeit von 854 ms. Das heißt, es gibt ein Problem mit den PHP- und APC-Einstellungen.

Meine aktuellen Einstellungen sind einfach

apc.shm_size = 64
apc.stat=1 

Wie kann ich mich verbessern?

Was sind die besten Einstellungen für Drupal angesichts der obigen Konfiguration?

Vielen Dank

Antworten:


12

Wir laufen in einer SVN-Push-Umgebung, sodass wir den Apc-Dateicache nur mit einem Skript leeren.

APC-Einstellungen:

apc.ttl=604800
apc.user_ttl=3600
apc.shm_size=192M
apc.include_once_override=1
auto_globals_jit=Off
apc.num_files_hint = 2048

apc.stat_ctime = 0
apc.file_update_protection = 2
apc.stat = 0

PHP Script:

<?php
$return = apc_clear_cache('opcode');
echo var_export($return);

604800 = 1 Woche.

Danach wird immer xdebug / xhprof und läuft und einen Cache - grind der Website zu tun sollten Sie wissen lassen , was die Website zu verlangsamen. Kurz gesagt, die Cache-Grind-Ausgabe ist der beste Weg, um Drupal zu beschleunigen. Im Folgenden liste ich auf, welche Patches und Module wir verwenden, um sie zu beschleunigen. in deinem Fall wird es höchstwahrscheinlich anders sein.

Drupal 6 Spezifische Antwort unten

Sobald Sie über diesen Punkt hinaus sind und feststellen, dass der APC Ihnen nicht das bietet, wonach Sie suchen, wechseln Sie zu pressflow und geben Sie diesen Patches einen Wirbel:

Probieren Sie auch einige dieser Module aus, da sie die Geschwindigkeit unserer Websites erheblich verbessern:


Vielen Dank für Ihre Antwort, aber ich habe Drupal 7.
John

Nehmen Sie also die APC-Teile und die xdebug / xhprof-Teile und sehen Sie sich die D6-Patches an, um zu zeigen, worauf Sie in der Warteschlange für Probleme achten müssen. Alle oben genannten Patches sind das Ergebnis eines Blicks auf den Cache, der Suche nach dem Schmerzpunkt und der Suche nach dem entsprechenden Problem. Schnellstart: drupal.org/project/issues/search/…
mikeytown2

Es gibt jetzt ein Drupal 7 Performance-Wiki: groups.drupal.org/node/210683
mikeytown2

1
Nur zu Ihrer Information, ich musste die Zeile apc.include_once_override = 1 kommentieren, da die Website puregin.org/node/2550/3928
corbacho

php.net/apc.configuration#ini.apc.include-once-override Vielen Dank für den Hinweis. Abhängig von der PHP- und APC-Version kann es zu Problemen kommen
mikeytown2 16.11.12

3

Dies ist eine jener "wie lange ist ein Stück Zeichenfolge Fragen".

Was für eine Site mit hohem Volumen gut ist, stimmt möglicherweise nicht mit einer Site mit niedrigem Volumen und vielen Modulen überein, und stimmt möglicherweise nicht mit einer Site mit mittlerem Volumen und nur wenigen aktivierten Modulen überein. Andere Sites, die auf dem Server ausgeführt werden, greifen möglicherweise auch auf den von APC verfügbaren Speicher zu.

Mein Ausgangspunkt ist

apc.enabled=1
apc.shm_segments=1
apc.shm_size=64
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=1

Ich passe dann die Einstellungen für den Server an, aber auch hier gibt es keine Einheitsgröße für alle Einstellungen.

Suchen Sie nach apc.php (wahrscheinlich unter /usr/share/pear/apc.php) und installieren Sie es in DOCROOT für Ihre Drupal-Installation. Sperren Sie es über Apache config auf Ihre IP-Adresse. Bearbeiten Sie den Benutzernamen / das Kennwort in und navigieren Sie zu diesem. Sie sehen dann Ihre APC-Statistiken.

Konfigurieren Sie den Parameter shm_size neu, um Cache-Fehler zu minimieren. Im Idealfall möchten Sie dem Cache gerade genug Speicherplatz geben, damit eine Datei niemals einen Cache-Fehler erleidet, sowie zusätzlichen Speicherplatz für den APC-Benutzercache.

Optimieren Sie die TTL, um Cache-Churning zu verhindern. Wenn Sie keine Dateien bearbeiten, können Sie diese Nummer erhöhen.

enable_cli ist praktisch, wenn Sie häufig drush verwenden, sodass drush die zwischengespeicherten Dateien von APC verwendet.

rfc1867 ist praktisch zum Hochladen von Dateien.

Mir ist auch die PHP-Fpm im Titel aufgefallen. Dies erschwert die Sache und geht wirklich über den Rahmen von Drupal Answers hinaus. Möglicherweise erhalten Sie bei Server Fault bessere Antworten , da sich viele der Systemkonfigurationseinstellungen nicht direkt auf Drupal beziehen.


Wo gibt es ein gutes Tutorial, das in einfacher Sprache erklärt, was die einzelnen Einstellungen bewirken, wie z. B. TTL, Segmente usw.? wie hilft cli bei drush
John

Könnten Sie bitte erläutern, wie "ich Datenverkehr erhalte, was auf dem Server noch läuft, welche Module ich installiert habe usw." Einstellungen beeinflussen? Danke
John

Diese Einstellungen oben haben nicht viel geholfen. Soll ich xhprof ausprobieren, um zu sehen, was mit PHP passiert?
John


1
@MPD> enable_cli ist praktisch, wenn Sie häufig drush verwenden, sodass drush die> zwischengespeicherten Dateien von APC verwendet. Tatsächlich ist die CLI ein separater Prozess und teilt ihren Apc-Cache nicht mit Apache oder auch nicht zwischen zwei Aufrufen, um sich zu beruhigen.
Robin Millette

2

APC verbessert nur das Laden und Parsen von PHP-Dateien. Ein großer Teil ist auch die Ausführungszeit selbst. Es gibt viele Faktoren, die die Ausführungszeit verlängern können, einschließlich Fehlern (insbesondere Cache-bezogene Fehler), internem Overhead (z. B. drupal_alter (), module_implements ()) und so weiter.

Wie Sie gefragt haben und bereits von mikeytown2 vorgeschlagen wurden, würde ich xhprof verwenden (ich bevorzuge es heutzutage gegenüber xdebug, da es direkten und schnellen Zugriff auf das Ergebnis bietet und keine zusätzlichen Tools erfordert), um herauszufinden, wo Ihre Engpässe sind.

Ich habe kürzlich zwei Blog-Posts über die Verwendung von xhprof in Drupal und typische Engpässe geschrieben , die Sie vielleicht interessieren.


groups.drupal.org/node/82889 PHP-Profilerstellung mit XHprof
john
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.