2010-12-27 7 views
9

Ich habe eine Instanz in Amazon EC2 eingerichtet, einem ubuntu 10.04 Server, auf dem apache2, php5 und mysql laufen.Wie löst man hohe CPU-Last durch Apache? (ubuntu + ec2)

Mit weniger als 10 Benutzern, die das System verwenden, erhält der Server 20%, 30%, 40% der CPU-Last.

Mit oben sehe ich in den Premieren Linien:

11121 www-data 20 0 71940 20m 11m S | 22.6 | 1.2 | 0: 00.68 apache2
10108 www-data 20 0 72196 22m 12m S | 21.9 | 1.3 | 1: 15,81 apache2
11122 www-data 20 0 71936 20m 11m S | 7.3 | 1.2 | 0: 00.68 apache2
10111 www-daten 20 0 72196 22m 12m S | 1.7 | 1.3 | 1: 16,43 apache2

Die CPU-Summe in diesen 4 Zeilen sind 53,5.

Wie kann ich die Prozesse detaillierter sehen?
Wie kann ich einen Blick in Skripts werfen, die laufen, die Zeiten, die es dauert, die von jedem Prozessor verbraucht wird?

Danke.

Antwort

3

Sie können strace im übergeordneten Prozess verwenden, um eine bessere Vorstellung davon zu bekommen, was es tut.

+0

Ok .. Ich benutze es .. aber ich möchte mehr über den Apache-Prozess wissen. Nicht nur "wie" es verarbeitet, sondern was. Welches Skript läuft jetzt? Wie viel Zeit spendiert jedes Skript von meiner CPU? –

3

Eine Möglichkeit zu sehen, was es tut, ist die Verwendung von lsof (möglicherweise müssen Sie es installieren). Um zu sehen, was die Prozesse in Ihrem Beispiel zugreifen würden Sie dies tun:

lsof -p 11121,10108,11122,10111

Dies zeigt Ihnen alle Dateien, die Prozess geöffnet hat. Normalerweise ist eine hohe CPU im Apache-Prozess auf etwas zurückzuführen, das die Website serverseitig versucht.