Wie benutzt PHP mehr als 100% CPU? [geschlossen]

8

Bei der Überprüfung der Anwendung eines Clients auf einem virtuellen Server eines Drittanbieters bemerkte ich ein faszinierendes Phänomen: Einzelne PHP-Prozesse scheinen mehr als einen Kern zu verwenden. Soweit ich weiß, kann PHP das nicht tun.

Verhaltensbeschreibung
Hier ist die Ausgabe von htop bei der Bearbeitung einer einzelnen Anfrage an die Web-Anwendung:
Ausgabe von htop, grün als user cpu und rot als system cpu

Alle vier Kerne sind zu 100%, es gibt nur einen PHP-Prozess mit 396% CPU und die Speicherauslastung ist niedrig.
Ich habe bereits die hohe System-CPU mit Strace oder Pidstat untersucht, konnte aber keine IO-Probleme finden.

Serverinformationen
Der virtuelle Server ist eine Debain LAMP-Umgebung mit Intels VT-X-Virtualisierung und Virtuozzo mit 4 Kernen bei 560 MHz:


Ausgabe von lscpu

Auf dem Server läuft PHP 5.5.9 in schnellem CGI, das von Apache 2.4.7 (Prefork) bedient wird. Nginx 1.9.4 dient als Revere-Proxy, Plesk 12.5 wird zum Konfigurieren des Servers verwendet.

Beispiel PHP-Code (EDIT)
Um den Anwendungscode als Quelle auszuschließen, habe ich das Verhalten mit einem einfachen Codecode bestätigt:

%Vor%

Zwei oder mehr PHP-Prozesse (EDIT) Wenn zwei oder mehr Anfragen gleichzeitig bearbeitet werden, läuft jeder Prozess auf so vielen Kernen wie möglich (2 Prozesse = & gt; 2 Kerne, jeweils 3 Prozesse = & gt; 1,33 Kerne).

Fragen

  • Ist es möglich, dass PHP mehr als einen Kern gleichzeitig verwendet?
  • Könnte das mit der Virtualisierung zusammenhängen?
  • Follow-Up: Was könnte der Grund für die Dominanz der System-CPU-Nutzung sein?
PvB 24.01.2016, 12:13
quelle

1 Antwort

0
  • Ist es möglich, dass PHP mehr als einen Kern gleichzeitig verwendet?

Ja, es heißt Pthreads. Es wurde entwickelt, um echtes Multi-Threading in PHP zu realisieren.

  • Könnte das mit der Virtualisierung zusammenhängen?

Unwahrscheinlich. Ich denke das gleiche wie Will sagte, es ist wahrscheinlich ein Sub-Prozess von PHP gestartet.

  • Follow-Up: Was könnte der Grund für die Dominanz der System-CPU-Nutzung sein?

Es ist vollständig an die Anwendung gebunden. Aber jede von php gestartete Multi-Core-Aufgabe könnte so auftauchen. Eine Java-App für das Rastern eines Bucket mit Svg-Image zum Beispiel.

    
JesusTheHun 24.01.2016 12:40
quelle

Tags und Links