Ich betreibe eine Wordpress-Site und jede PHP-Prozess-Nutzung etwa 200 MB bis 250 MB Resident-Size-Speicher. Mit 16 GB RAM kann der Server nur etwa 70 Prozesse verarbeiten. Indem der virtuelle Speicher auf 16 GB erhöht wird, kann er 140 verarbeiten. Danach steigt die Last weiter an. Wenn es in 10 Minuten 200 Verbindungen gibt, erreicht die Serverlast 20 auf einem 3 GHz Quad-Core-Xeon-Prozessor!
Ich habe versucht, alle Plugins zu deaktivieren, aber das reduziert die PHP-Speicherauslastung jedes Prozesses nur um weniger als 10%. suPHP sagt mir, welcher Benutzer so viel Speicher verwendet, aber nicht welchen Teil des WordPress-Codes.
Irgendwelche Vorschläge, wie Sie die Speichernutzung reduzieren können? Oder ist meine einzige Option, auf 32 GB RAM zu aktualisieren?
%Vor%Größte Ausgaben von pmap -d
%Vor%ipcs Ausgabe
%Vor%Ich fasse zusammen, was Lisa getan hat, um das Problem zu finden:
pmap -d <pid>
. Die Ausgabe zeigte, dass eine große Menge an gemeinsam genutztem Speicher von dem Prozess verwendet wird: %Vor%
ipcs -m
. Es hat gezeigt, dass es viele gemeinsame Speicherbereiche gibt, die vom Benutzer nobody (dem Webserver) erstellt wurden, hier sind nur einige davon: %Vor%
für i in 'ipcs -m | Schnitt -d '' -f2 | grep '^ [0-9]' '; do ipcrm -m $ i; getan
Rasmus Lerdorf hat 2010 auf Confoo eine Konferenz über PHP-Performance gehalten und er hat einen Wordpress-Blog als Beispiel benutzt, das sollte Ihnen großartige Werkzeuge zur Beantwortung Ihrer Frage geben:
Zusammenfassend:
phpinfo()
aus und deaktivieren Sie PHP-Erweiterungen, die Sie nicht verwenden. Sie können viel Gedächtnis (imagick, curl, ...) siege
aus. Manchmal haben kleine Optimierungen große Auswirkungen auf die Leistung. Stellen Sie daher sicher, dass Sie über Kennzahlen verfügen, die Ihnen bei der Entscheidungsfindung helfen. md5()
verwendet, um meine SQL-Abfragen zu hashen und zwischenzuspeichern. Die Aufrufe von md5()
verwenden 20% der CPU-Zeit. Ich würde auf jeden Fall mit der Deaktivierung von PHP-Erweiterungen beginnen, wenn möglich.