Page 1 of 1

Performance Monitoring

Posted: 2008-07-21 11:38
by simcen
Hoi Zusammen

Ich brauche wieder mal Rat :)
Mein Apache braucht zu Spitzenzeiten übermässig viel CPU, mit grösster Wahrscheinlichkeit kommt die Auslastung von schlechten PHP-Scripts. Da ich aber mit den Apache-Logs und der Prozess-Auswertung nicht auf die schliche komme, welches Script die Auslastung auslöst, brauche ich eine andere Variante.
Daher:
- Wie messe ich am besten einen hohen CPU-Verbrauch in einem PHP-Script? Kann man einfach annehmen, je länger die Script-Laufzeit desto höher der CPU Verbrauch (Queueing)?
- Gibt es externe Tools (z.B. via Apache Modul) um eine tiefere Perfomance Analyse zu machen?

Dann weiter:
- Welche Code-Konstrukte in PHP sind die klassischen Ressourcenfresser? (Ich weiss, sehr allgemeine Frage)


So, wie es meistens bei meinen Posts ist, brauche ich nur eine kleine Denkanregung ;)
Danke schon mal im Vorraus und Gruss
Simon

PS:
System ist ein Apache2 v2.2.3 auf Debian Etch 32bit.

Re: Performance Monitoring

Posted: 2008-07-21 13:18
by daemotron
simcen wrote:- Wie messe ich am besten einen hohen CPU-Verbrauch in einem PHP-Script? Kann man einfach annehmen, je länger die Script-Laufzeit desto höher der CPU Verbrauch (Queueing)?
Hmm, wenn Du dasselbe Skript sehr häufig ausführst (z. B. mit ab oder als CLI mit time), solltest Du bei der Laufzeit irgendwas in Richtung Normalverteilung bekommen. Die Streuung kannst Du damit eliminieren; der mittlere Bereich sollte schon signifikant für den Ressourcenverbrauch sein. Allerdings müsstest Du ausschließen, dass die Laufzeit zu einem Großteil aus I/O-Waits, also Plattenzugriffen, besteht - denn die haben streng genommen nichts mit dem Verbrauch an tatsächlicher CPU-Leistung zu tun.

Unter FreeBSD gäbe es noch den Weg, für die Ausführung der zu testenden Skripte einen eigenen User anzulegen und CPU-Accounting im Kernel zu aktivieren. Damit bekäme man eine Sicht, welcher User welchen Leistungsanteil beansprucht (natürlich auch für andere Dienste).

Re: Performance Monitoring

Posted: 2008-07-21 15:15
by Joe User
jfreund wrote:Unter FreeBSD gäbe es noch den Weg, für die Ausführung der zu testenden Skripte einen eigenen User anzulegen und CPU-Accounting im Kernel zu aktivieren.
Dat gibbet bei Linux och, im Kernel als "General Setup -> BSD Process Accounting" und die Userspace-Tools je nach Distri unterschiedlich, bei Gentoo sys-process/acct ;)

Re: Performance Monitoring

Posted: 2008-07-23 20:01
by simcen
Könnte auf einem produktiven System schwierig werden ;) Auf dem Entwicklungssystem fehlt mir die Möglichkeit, eine reale Benutzerlast darstellen zu können (Verteilung read/write, unterschiedliche Think-Times...).
Code-Optimieren ist einfacher gesagt als getan - wonach suche ich eigentlich? Ist schwierig...