Wie optimiert man die php Prozessspeicherauslastung?

8

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%     
Lisa 27.04.2012, 15:35
quelle

2 Antworten

5

Ich fasse zusammen, was Lisa getan hat, um das Problem zu finden:

  • Überprüfen Sie das Speicherlayout eines einzelnen PHP-Prozesses mit pmap -d <pid> . Die Ausgabe zeigte, dass eine große Menge an gemeinsam genutztem Speicher von dem Prozess verwendet wird:
%Vor%
  • Untersuchen Sie die freigegebenen Speicherbereiche mit 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%
  • Deaktivieren Sie eAccelerator in der php.ini und entfernen Sie die erstellten gemeinsam genutzten Speicherbereiche:
  

für i in 'ipcs -m | Schnitt -d '' -f2 | grep '^ [0-9]' '; do ipcrm -m $ i; getan

    
strkol 27.04.2012, 21:21
quelle
2

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:

  • Führen Sie phpinfo() aus und deaktivieren Sie PHP-Erweiterungen, die Sie nicht verwenden. Sie können viel Gedächtnis (imagick, curl, ...)
  • nehmen
  • Erstellen Sie ein Diagramm Ihrer Includes mit der Erweiterung inclued.so. Sie könnten nutzlose Funktionen in Ihrem Wordpress-Setup laden.
  • Führen Sie Benchmarks mit 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.
  • Verwenden Sie callgrind, um zu zeigen, wo Sie die Leistung verlieren. In einem meiner Projekte habe ich 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.

    
Tchoupi 27.04.2012 20:06
quelle

Tags und Links