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.
Performance Monitoring
-
- Administrator
- Posts: 2639
- Joined: 2004-01-21 17:44
Re: Performance Monitoring
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.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)?
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).
-
- Project Manager
- Posts: 11179
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: Performance Monitoring
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 ;)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.
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Posts: 333
- Joined: 2003-02-12 14:35
- Location: Bern, Schweiz
Re: Performance Monitoring
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...
Code-Optimieren ist einfacher gesagt als getan - wonach suche ich eigentlich? Ist schwierig...