Apache/MySQL/PHP für Wordpress optimieren

Apache/MySQL/PHP für Wordpress optimieren

Ich versuche herauszufinden, warum meine Apache-Prozesse so viel Speicher verbrauchen

Meine Slice-Spezifikationen (1,5 GB RAM, CentOS 5, Apache2, PHP 5.2, MySQL)

Wie Sie sehen, verbrauchen meine Top-Prozesse fast die Hälfte meines gesamten Speichers, und wenn weitere Prozesse gestartet werden, kommt der Server fast zum Stillstand, wechselt häufig in den Swap-Modus und stürzt ab.

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND   
6817 apache    40   0  296m 103m 3920 S  0.0  6.7   0:03.52 httpd                         
6789 apache    40   0  295m 101m 3932 S  0.0  6.6   0:07.04 httpd                         
6765 apache    40   0  284m  91m 3948 S 55.1  5.9   0:12.45 httpd                         
6798 apache    40   0  284m  90m 3944 S  0.0  5.9   0:05.49 httpd                         
6542 apache    40   0  283m  90m 3956 S  0.0  5.8   0:43.25 httpd                         
6827 apache    40   0  283m  88m 3796 S  0.0  5.7   0:01.83 httpd    

Hat jemand eine Ahnung, was die Ursache dafür sein könnte, dass Apache (und PHP) so viel Speicher verbrauchen?

              total       used       free     shared    buffers     cached
Mem:          1545        827        718          0          3        111
-/+ buffers/cache:        713        832
Swap:         3071        103       2968

Antwort1

Sie führen mit ziemlicher Sicherheit mod_php aus, was bedeutet, dass Sie mit ziemlicher Sicherheit Apache in mpm_prefork ausführen.

Wenn die Leistung im Allgemeinen in Ordnung ist, bis Sie aufgrund der Belastung mit dem Swapping beginnen, können Sie die MaxClients von Apache schnell drosseln. Wenn Apache Arbeitsprozesse nach Belieben aufteilen darf, beginnt es unter Belastung mit dem Swapping. Anfragen werden in die Warteschlange gestellt, bis ein Arbeitsprozess verfügbar ist. Es kann also langsam werden, aber nicht so langsam wie beim Death-by-Swap.

Wenn Sie die Dinge wirklich genauer abstimmen müssen, sollten Sie von prefork apache mpm abrücken. Das bedeutet, dass PHP als FastCGI ausgeführt wird. Wenn Sie PHP unter FastCGI verwenden möchten, sollten Sie ein Upgrade auf PHP 5.3.3 in Betracht ziehen, das einen viel besseren FastCGI-Prozessmanager hat (Konfigurationsoption --enable-fpm).

php-fpm/worker ist viel speichereffizienter als das altmodische mod_php. Sie können dann die Anzahl der Apache-Prozesse/Threads unabhängig von der Anzahl der PHP-Prozesse anpassen. Und Ihre speicherintensiven PHP-Prozesse werden nur zum Bereitstellen von PHP-gesteuerten Inhalten verwendet und nicht für das Bereitstellen statischer Dateien verschwendet.

Antwort2

PID  USER   PR NI VIRT RES  SHR  S %CPU %MEM TIME+   COMMAND
6817 apache 40 0  296m 103m 3920 S 0.0  6.7  0:03.52 httpd
6789 apache 40 0  295m 101m 3932 S 0.0  6.6  0:07.04 httpd
6765 apache 40 0  284m 91m  3948 S 55.1 5.9  0:12.45 httpd
6798 apache 40 0  284m 90m  3944 S 0.0  5.9  0:05.49 httpd
6542 apache 40 0  283m 90m  3956 S 0.0  5.8  0:43.25 httpd
6827 apache 40 0  283m 88m  3796 S 0.0  5.7  0:01.83 httpd

Läuft auf Apache nur WordPress? Mich interessiert vor allem die sehr hohe CPU-Auslastung von PID 6765. Ich frage mich, was das macht. Was die Mem%s angeht, sieht das für eine Webanwendungskonfiguration ziemlich normal aus, da jeder Thread tatsächlich mehr als einen Worker ausführt.

Welches MPM verwenden Sie für Apache und wie haben Sie es konfiguriert?

Wenn Sie Terminaldumps posten, beginnen Sie bitte jede Zeile mit vier Leerzeichen. Dadurch bleibt die Formatierung erhalten.

Antwort3

Meine Kristallkugel ist ein bisschen verstaubt, aber ich schätze, du benutztzwischengespeichertund seine PHP-Erweiterung. Wenn das der Fall ist, versuchen Sie, es zu deaktivieren, es sei denn, Sie brauchen es wirklich.

Eine andere Möglichkeit ist, dass Sie eine Art Op-Code-Cache haben, wie zum BeispielXCache, installiert und so konfiguriert, dass viel Speicher genutzt wird.

Sie können versuchen

pmap -x `pidof apache`

um zu sehen, was den Speicher verbraucht.

Antwort4

Laden Sie keine nicht verwendeten Apache-Module (wie Python, Perl usw.).

Verwenden Sie das PHP-Modul eAccelerator. Es handelt sich um einen PHP-Compiler. Sie erhalten eine schnellere Ausführung und einen geringeren Speicherverbrauch.

Andere Benutzer haben möglicherweise auch recht.

verwandte Informationen