TOP - httpd - details zum Prozess anzeigen?

Apache, Lighttpd, nginx, Cherokee
Post Reply
kwik
Posts: 41
Joined: 2002-06-28 20:08
Location: München
Contact:
 

TOP - httpd - details zum Prozess anzeigen?

Post by kwik »

Top zeigt mir folgendes:

Code: Select all

 10:21am  up 241 days, 22:46,  1 user,  load average: 1.55, 1.59, 1.46
82 processes: 79 sleeping, 2 running, 1 zombie, 0 stopped
CPU states: 94.8% user,  5.3% system,  0.0% nice, 853870.0% idle
Mem:   248028K av,  213656K used,   34372K free,       0K shrd,    2532K buff
Swap:  787176K av,  103856K used,  683320K free                   87992K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
10745 wwwrun    18   0 25212  18M 16488 R    76.9  7.5  92:37 httpd
11196 wwwrun     9   0 16364 9840  7956 S     7.5  3.9   1:37 httpd
11899 wwwrun     9   0 15728 9236  7348 S     5.3  3.7   1:32 httpd
13953 wwwrun     9   0 16340 9988  4480 S     2.7  4.0   1:01 httpd
10823 mysql      9   0 20644  16M 15980 S     2.1  6.9  17:26 mysqld
19112 root      11   0   960  960   740 R     0.5  0.3   0:01 top
16150 wwwrun     9   0 15944 9572  4468 S     0.1  3.8   0:33 httpd
...
D.h. einer von meinen httpds verbraucht 76,9% (geht hoch bis 98% wenn er mehr bekommen kann), anderen httpd weniger. Wie kann ich nun herausfinden, was dieser eine Prozess genau macht um zu sehen, warum gerade der so viel Resourcen verbraucht?

Meine httpd-conf (Auszug):

Code: Select all

Timeout 300
KeepAlive On
MaxKeepAliveRequests 1500
KeepAliveTimeout 5
MinSpareServers 5
MaxSpareServers 5
StartServers 5
MaxClients 100
MaxRequestsPerChild 10000
Danke im Voraus ;)
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by [tom] »

Kwik wrote:

Code: Select all

CPU states: 94.8% user,  5.3% system,  0.0% nice, 853870.0% idle
Ich frag mich eher, wie TOP die Idle-Time bei Dir ermittelt.

Und dann hast Du noch ein Zombie. Wegen dem httpd: Ist das immer so (ständig) oder nur zwischendurch mal?

[TOM]
kwik
Posts: 41
Joined: 2002-06-28 20:08
Location: München
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by kwik »

Ist erst seit heute, ich habe allerdings gestern an der httpd.conf rumgespielt. Den Server dann aber einige Stunden beobachtet und nichts entdeckt. Der httpd bleibt die ganze Zeit so fordernd und nimmt sich alles, was er kriegen kann...

idle spinnt. Meistens richtig, zwischendrin dann dieser komische Wert für einen Anzeigeintervall.

Zombie ist auch httpd:

Code: Select all

 10:59am  up 241 days, 23:24,  1 user,  load average: 1.12, 1.32, 1.34
103 processes: 97 sleeping, 3 running, 3 zombie, 0 stopped
CPU states:  0.1% user,  0.0% system,  0.1% nice,  0.0% idle
Mem:   248028K av,  206404K used,   41624K free,       0K shrd,    2728K buff
Swap:  787176K av,  103848K used,  683328K free                   78192K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
10745 wwwrun    17   0 25212  18M 16488 R    94.2  7.5 125:41 httpd
20646 root      13   0   952  948   728 R     3.8  0.3   0:00 top
20633 wwwrun     9   0     0    0     0 Z     1.9  0.0   0:00 httpd <defunct>
Ne Idee?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by captaincrunch »

Wenn du ganz genau wissen willst, was der Prozess macht, hilft dir strace -p{PID} weiter. Dort wirst du dann sämtliche Syscalls und sonstiges durchrattern sehen. Genauer geht's eigentlich kaum ... :wink:
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
kwik
Posts: 41
Joined: 2002-06-28 20:08
Location: München
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by kwik »

Danke!

Aber wenn ich mir damit PID 10745 anschaue kommt gar nichts rüber. Bei allen anderen httpd-PIDs schon. Jetzt kann ich natürlich einfach den apache neu starten und das Problem ist gelöst. Aber die Ursache nicht. Wie könnte ich dahinter kommen?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by captaincrunch »

Auch ein Apache-Prozess kann sich mal aufhängen. Wirklich rausfinden wirst du das wohl nur dadurch können, dass du den Prozess mit einem Signal killst, das den Prozess veranlasst, einen coredump zu schreiben. Wenn du den analyiserst, wirst du dahinterkommen.

Meine Empfehlung : starte den Indianer neu, und beobachte das ganze ein bisschen. Wenn's nicht wieder auftritt, würde ich mir keine großen Gedanken darum machen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
cyberline
Posts: 97
Joined: 2003-01-28 10:11
Location: Hürth
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by cyberline »

CaptainCrunch wrote:Wenn du ganz genau wissen willst, was der Prozess macht, hilft dir strace -p{PID} weiter. Dort wirst du dann sämtliche Syscalls und sonstiges durchrattern sehen. Genauer geht's eigentlich kaum ... :wink:
strace gibts nur unter Suse ?
gibts sowas für redhat ?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by captaincrunch »

strace gibts nur unter Suse ?
gibts sowas für redhat ?
Wer sagt das ? :wink:

Sicher gibt's das ganze auch für RedHat, ich hab aber gerade keine Kiste hier, wo ich nachschauen könnte, in welchem Paket das steckt. Sollte aber eigentlich schon bei der Grundinstallation dabei sein.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
cyberline
Posts: 97
Joined: 2003-01-28 10:11
Location: Hürth
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by cyberline »

CaptainCrunch wrote:
strace gibts nur unter Suse ?
gibts sowas für redhat ?
Wer sagt das ? :wink:

Sicher gibt's das ganze auch für RedHat, ich hab aber gerade keine Kiste hier, wo ich nachschauen könnte, in welchem Paket das steckt. Sollte aber eigentlich schon bei der Grundinstallation dabei sein.
Na, is net dabei, aber habs gefunden bei rpmfind :)
jtb
Posts: 599
Joined: 2002-08-18 16:41
Location: Darmstadt
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by jtb »

Hi,

ich würde "MaxRequestsPerChild 10000" ein bißchen niedriger setzen..

Das garantiert, dass ein Child irgendwann mal gekillt wird - bei dir aber erst nach 10.000 Requests..

Auch "MaxKeepAliveRequests 1500" erscheint mir ein bißchen zu hoch und kann deinen Server stark Performance rauben..
cyberline
Posts: 97
Joined: 2003-01-28 10:11
Location: Hürth
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by cyberline »

Gibts auch ein Programm, welches nur Anzeigt in welchem Ordner der apache Prozess momentan liest/schreibt ?
Ich brauch das weil ich manche Prozesse habe die 25 und mehr % CPU Time brauchen und ich wissen, welche Seite das verrusacht...
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by captaincrunch »

Gibts auch ein Programm, welches nur Anzeigt in welchem Ordner der apache Prozess momentan liest/schreibt ?
Ich brauch das weil ich manche Prozesse habe die 25 und mehr % CPU Time brauchen und ich wissen, welche Seite das verrusacht...
Ein spezielles Programm dafür kenne ich nicht. Informationen über Prozesse kannst du aber auch selbser ganz gut unter /proc finden.

Mach mal ein cd /proc/{PID}. cwd ist immer der Working Path des Prozesses, u.U. könnte environ noch ganz interessant sein :

Code: Select all

cat environ | tr '\0' 'n'
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
kwik
Posts: 41
Joined: 2002-06-28 20:08
Location: München
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by kwik »

Jtb wrote: ich würde "MaxRequestsPerChild 10000" ein bißchen niedriger setzen..

Das garantiert, dass ein Child irgendwann mal gekillt wird - bei dir aber erst nach 10.000 Requests..
Ich habe es mal auf 5.000 gesetzt. Um sicher zu gehen: Das gilt pro httpd-Prozess, erst nach 10.000 wird dieser eine Prozess neu gestartet, nicht nach 10.000 Request an den Apache überhaupt?
Jtb wrote: Auch "MaxKeepAliveRequests 1500" erscheint mir ein bißchen zu hoch und kann deinen Server stark Performance rauben..
Habe es mal auf 500 gesetzt. Werde nun weiterbeobachten - und berichten ;)
kwik
Posts: 41
Joined: 2002-06-28 20:08
Location: München
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by kwik »

Ich frage mich aber, wo nach wie vor der Zombie herkommt. Das habe ich erst, seitdem ich das UBB auf phpBB umgestellt habe.
jtb
Posts: 599
Joined: 2002-08-18 16:41
Location: Darmstadt
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by jtb »

Kwik wrote:
Jtb wrote: ich würde "MaxRequestsPerChild 10000" ein bißchen niedriger setzen..

Das garantiert, dass ein Child irgendwann mal gekillt wird - bei dir aber erst nach 10.000 Requests..
Ich habe es mal auf 5.000 gesetzt. Um sicher zu gehen: Das gilt pro httpd-Prozess, erst nach 10.000 wird dieser eine Prozess neu gestartet, nicht
nach 10.000 Request an den Apache überhaupt?

yup, das gilt pro Child..

Auszug aus der Doku:
The MaxRequestsPerChild directive sets the limit on the number of requests that an individual child server process will handle. After MaxRequestsPerChild requests, the child process will die. If MaxRequestsPerChild is 0, then the process will never expire.

Setting MaxRequestsPerChild to a non-zero limit has two beneficial effects:

it limits the amount of memory that process can consume by (accidental) memory leakage;
by giving processes a finite lifetime, it helps reduce the number of processes when the server load reduces.
Kwik wrote:
Jtb wrote: Auch "MaxKeepAliveRequests 1500" erscheint mir ein bißchen zu hoch und kann deinen Server stark Performance rauben..
Habe es mal auf 500 gesetzt. Werde nun weiterbeobachten - und berichten ;)
jo, 500 sollten ok sein.. Default ist 100..

Du musst halt wie gesagt beobachten und die Parameter an dein System anpassen..
kwik
Posts: 41
Joined: 2002-06-28 20:08
Location: München
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by kwik »

Weiter gehts...

Code: Select all

2:06am  up 242 days, 14:32,  1 user,  load average: 3.01, 3.07, 2.95
71 processes: 66 sleeping, 5 running, 0 zombie, 0 stopped
CPU states: 99.4% user,  0.5% system,  0.0% nice,  0.0% idle
Mem:   248028K av,  233656K used,   14372K free,       0K shrd,    2508K buff
Swap:  787176K av,   81196K used,  705980K free                  110972K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
23834 wwwrun    20   0 24096  15M  4780 R    34.2  6.3  20:56 httpd
23836 wwwrun    14   0 25784  15M  4384 R    32.8  6.3  50:47 httpd
23833 wwwrun    14   0 25524  17M  4992 R    32.2  7.1  19:24 httpd
...
Inzwischen haben mir User gemeldet:

Code: Select all

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 184320 bytes) in /home/www/webxx/html/forum/includes/template.php(127) : eval()'d code on line 111
Nun hatte ich den Wert in der php.ini schon auf 16M gesetzt. Könnte es hier einen Zusammenhang geben - httpd-cpu-% und php-mem?

Was kann ich dagegen tun - ausser den Wert in der php.ini immer höher treiben?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by captaincrunch »

Was kann ich dagegen tun - ausser den Wert in der php.ini immer höher treiben?
Vernüntige Scripte einsetzen, die dir nicht die geamten Ressourcen ziehen ... :wink:
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
kwik
Posts: 41
Joined: 2002-06-28 20:08
Location: München
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by kwik »

CaptainCrunch wrote:
Was kann ich dagegen tun - ausser den Wert in der php.ini immer höher treiben?
Vernüntige Scripte einsetzen, die dir nicht die geamten Ressourcen ziehen ... :wink:
phpBB gehört nicht dazu? :roll:
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by captaincrunch »

phpBB gehört nicht dazu?
In dem Fall ist
a) dein Server so stark frequentiert, dass er zu klein dimensioniert ist, oder
b) du hast grundsätzliche Probleme mit deiner Apache / PHP-Konfiguration
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
kwik
Posts: 41
Joined: 2002-06-28 20:08
Location: München
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by kwik »

Und genau das möchte ich herausfinden ;) Vorher hatte ich die Probleme mit UBB nicht. Und es kann auf dem Server (rootserver) auch ruhig mal "viel" los sein, ohne dass die Serverlast hochgeht. Aber irgendwann gibt es einen Auslöser und die Prozesse hängen, bzw brauchen wie oben beschrieben so viel Resourcen. Habe inzwischen an den Configs ja einiges geändert und beobachte weiter. Seit der letzen Ã?nderung läuft alles im grünen Bereich (load < 0.4). Ich hoffe das bleibt so, aber ich glaube da nicht wirklich dran :?
swosher
Posts: 48
Joined: 2002-11-27 12:46
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by swosher »

mmh ich habe auch mehrere stark frequentierte phpbb boards laufen ohne probleme..

es kann natürlich sein, wenn du den ein oder anderen hack eingebaut hast, das dieser nicht sauber ist..

ich habe zb bei phpkit festgestellt, das es nicht ganz sauber programmiert ist, was das schliessen der db verbindung angeht ..

aber mit phpbb habe/hatte ich bisher keine probleme...
kwik
Posts: 41
Joined: 2002-06-28 20:08
Location: München
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by kwik »

Ich habe > 60 MODs installiert. Aber jeden einzelnen getestet und bei keinem grössere Probleme festgestellt. Seit der letzten httpd.conf Ã?nderung läuft alles prima.
nn4l
Posts: 172
Joined: 2002-06-19 07:06
Contact:
 

Re: TOP - httpd - details zum Prozess anzeigen?

Post by nn4l »

Ich habe auch gelegentlich (alle paar Monate einmal) abgestürzte httpd-Prozesse, die 100% CPU verbrauchen. Habe aber nie die Ursache rausgefunden, scheint was mit zu hoher Last bei zuwenig RAM zu tun zu haben.

Eine Lösung wäre, im apachectl Skript den ulimit Befehl zu nutzen, um die maximale CPU-Zeit pro Prozess z.B. auf 8 Std. zu begrenzen. Danach wird der Prozess abgeschossen.
Post Reply