Performance

Apache, Lighttpd, nginx, Cherokee
Post Reply
marky
Posts: 66
Joined: 2003-06-18 12:49
 

Performance

Post by marky »

Hallo zusammen,

ich habe folgendes Problem: mein Root-Server wird nach zwei bis drei Tagen derart langsam, dass er bis zu zehn Sekunden braucht um auf eine Anfrage Daten zu senden. Nach einem Reset ist wieder alles okay, sodass es nicht an der aktuellen Belastung liegen kann. Wie kann ich feststellen, was das Problem ist. Gibt es eine Möglichkeit, einzusehen, was aktuell am meisten Last verursacht?

Es handelt sich um einen Celeron 1200 MHz, der mit 4.000 Besuchern am Tag und unter 10 GB pro Monat nicht überlastet sein dürfte, oder?

Danke!
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: Performance

Post by Joe User »

Persistente Verbindungen in der php.ini deaktiviert?
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings 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.
kawfy
Posts: 307
Joined: 2002-08-08 23:45
 

Know your tools or die.

Post by kawfy »

mit free(1) und uptime(1) kommt man da nicht weiter ...
  • top(1)
  • vmstat(1)
  • mysqladmin(1), z. B. "mysqladmin processlist", evtl. das Tool "mytop" besorgen
  • ps aux, geeignet sortiert, z. B. "ps aux | sort -k 3 -n -r" oder ps aux | sort -k 4 -n -r" (vgl. mit "top")
:!: Die Beurteilung der Ausgabe dieser Tools erfordert Erfahrung.
kuntho
Posts: 149
Joined: 2004-10-27 14:22
Location: Küps
Contact:
 

Re: Performance

Post by kuntho »

ich würde ganz pauschal mal auf ein Speicherproblem tippen. Versuchs mal mit

top

und dann mit <SHIFT>+<M> die laufenden Prozesse nach Speicherbedarf listen. Hatte mal ein ähnliches Problem mit dem Sapamassassin, der hat so viel speicher gefressen, dass die Kiste nach paar Stunden nur noch mit swappen beschäftigt war. Zumindest kannst Du mit top erst mal feststellen, ob der Prozessor oder das Memory der Engpass ist.
marky
Posts: 66
Joined: 2003-06-18 12:49
 

Re: Performance

Post by marky »

Heute morgen hatte ich ein Reset, un im Moment gibt "top" wie folgt aus:
12:17pm up 12 min, 1 user, load average: 0.04, 0.08, 0.08
65 processes: 62 sleeping, 2 running, 0 zombie, 1 stopped
CPU states: 7.3% user, 2.7% system, 0.0% nice, 89.9% idle
Mem: 248508K av, 85420K used, 163088K free, 0K shrd, 20236K buff
Swap: 265064K av, 0K used, 265064K free 34524K cached
Sieht eigentlich ganz gut aus. Ich will nun mal sehen, wie es ist, wenn der Server wieder so lahm ist.
bungeebug
Posts: 187
Joined: 2004-04-14 10:08
 

Re: Performance

Post by bungeebug »

Moin.

ich weiß nich was du alles laufenlässt aber 7.2% CPU Last im Leerlauf ist ne Menge ...
kuntho
Posts: 149
Joined: 2004-10-27 14:22
Location: Küps
Contact:
 

Re: Performance

Post by kuntho »

wichtig wäre die ausgabe von top, wenn die maschine in die knie geht. das war ja nach 12 minuten offensichtlich noch nicht der fall.
masterchief
Posts: 11
Joined: 2004-10-27 17:50
 

Re: Performance

Post by masterchief »

Ja, zeig mal [b]top[/b] und [b]vmstat[/b] wenn die Kiste hängt. Wichtig ist bei vmstat das si und so.
Evtl. läuft irgendein Skript bzw. wieviel Prozesse laufen wenns langsam ist ?
Anonymous
 

Re: Performance

Post by Anonymous »

Vielleicht gibts auch Speicherlecks auf der Kiste.
Mal beobachten ob sich da was mit Speicher 'vollsaugt' je laenger es laeuft..?

U.U. kann dann z.b. ein graceful restart des Apache sehr helfen, manchmal wird jedoch ein harter Restart noetig.
marky
Posts: 66
Joined: 2003-06-18 12:49
 

Re: Performance

Post by marky »

So, der Server ist heute morgen soweit gewesen, dass er swappen musste:
1:44pm up 2 days, 1:39, 1 user, load average: 0.58, 0.74, 0.83
75 processes: 73 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 41.2% user, 1.3% system, 0.0% nice, 57.3% idle
Mem: 248508K av, 221304K used, 27204K free, 0K shrd, 55988K buff
Swap: 265064K av, 1716K used, 263348K free 74612K cached
Das meiste Memory (jeweils 2-3 %) brauchen Prozesse des Users "wwwrun" und zwar die Befehle "httpd". Ich denke das ist die normale Ausgabe von Webseiten und nicht sonderlich ungewöhnlich, zumal diese Prozesse kaum CPU brauchen.

Dann habe ich noch etliche Prozesse des Users "mysql", sie benötigen durchschnittlich 2-3 % CPU, jedoch weniger Memory (1-2%) und erscheinen mir auch normal.

Auffällig waren jedoch vier bis fünf Prozesse des Users "wwwrun", die jeweils 15 bis 25 % CPU benötigten, auch einigen Speicher belegten und schon seit zig Stunden liefen. Befehl war hier auch "httpd". Nachdem ich sie gekillt habe, war der Server wieder fix und swappen musste er auch nicht mehr. Wodurch kann soetwas entstehen? Und wie kann man das vermeiden?
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: Performance

Post by Joe User »

marky wrote:Wodurch kann soetwas entstehen? Und wie kann man das vermeiden?
http://www.rootforum.org/forum/viewtopi ... 326#207326
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings 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.
marky
Posts: 66
Joined: 2003-06-18 12:49
 

Re: Performance

Post by marky »

Also heute war der Server wieder soweit, nachdem er wohl gestern ziemlich gefragt war:

ich hatte einen Prozess des Useres wwwrun mit dem Command httpd, der 83 % der CPU in Anspruch nahm und schon mehrer hundert Minuten alt war. Wie kann ich feststellen woran das konkret gelegen hat. Sicher, hier wurde irgend eine HTML- bzw. PHP-Seite ausgegeben, aber welche ist die mit dem Problem?
kuntho
Posts: 149
Joined: 2004-10-27 14:22
Location: Küps
Contact:
 

Re: Performance

Post by kuntho »

marky wrote:So, der Server ist heute morgen soweit gewesen, dass er swappen musste:
1:44pm up 2 days, 1:39, 1 user, load average: 0.58, 0.74, 0.83
75 processes: 73 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 41.2% user, 1.3% system, 0.0% nice, 57.3% idle
Mem: 248508K av, 221304K used, 27204K free, 0K shrd, 55988K buff
Swap: 265064K av, 1716K used, 263348K free 74612K cached
gib ner maschine swap und sie wird swappen, das ist doch ganz normal, und 1,7MB swap used, worüber beschwerst du dich?

interessant ist die ausgabe von top, vmstat, wenn die maschine am anschlag läuft. apache access- und errorlog? messages? warn? ist da was verwertbares drin, wenn das prob ein httpd-prozess ist?
Anonymous
 

Re: Performance

Post by Anonymous »

Hallo rootforum.org/,

ich habe vermutlich das gleiche Problem. Der User wwwrun verbraucht mit einigen httpd Prozessen sehr viel Ressourcen, v.a. CPU. Nachdem ich diese Prozesse beendet habe, läuft der Server einige Stunden sehr schnell, wird jedoch mit der Zeit immer langsamer.

Hier die Ausgabe von uptime von heute morgen:
10:36am up 9 days 19:44, 1 user, load average: 4.01, 3.79, 3.70
Gestern Mittag, nachdem ich die störenden Prozesse gekillt habe, waren die load average Werte alle knapp über 1. Gestern Abend waren die Werte dann schon über 2. Zu ihren besten Zeiten waren die Werte aber auch schonmal bei über 30. 8O

Hier die Ausgabe von top von jetzt:

Code: Select all

10:39am  up 9 days, 19:46,  1 user,  load average: 3.65, 3.73, 3.69
117 processes: 110 sleeping, 6 running, 1 zombie, 0 stopped
CPU states: 97.6% user,  2.3% system,  0.0% nice,  0.0% idle
Mem:  1016776K av,  791064K used,  225712K free,       0K shrd,   96492K buff
Swap:  512024K av,    1988K used,  510036K free                  535844K cached


  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
24046 wwwrun    25   0 16232  15M 11040 R    32.6  1.5 414:00 httpd
28091 wwwrun    25   0 16276  15M 10976 R    31.2  1.6  19:59 httpd
31797 wwwrun    25   0 16052  15M 11044 R    29.8  1.5 365:34 httpd
12011 wwwrun    15   0     0    0     0 Z     1.9  0.0   0:00 httpd <defunct>
12014 wwwrun    15   0 12368  12M 11048 S     1.1  1.2   0:00 httpd
31467 wwwrun    15   0 15560  15M 10996 S     0.5  1.5   0:34 httpd
11965 gamesfin  15   0   928  928   696 R     0.3  0.0   0:00 top
25743 mysql     15   0 33176  32M  3000 S     0.1  3.2  21:43 mysqld
    1 root      15   0   236  236   204 S     0.0  0.0   0:15 init
...
Und hier noch vmstat:

Code: Select all

   procs                      memory    swap          io     system         cpu
 r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
 5  1  0   1988 231988  96504 536016   0   0     2    15   34     1  90   2   8

3 mal täglich die Prozesse zu killen scheint mir nicht die sinnvollste Lösung zu sein. Benötigt ihr noch weitere Daten? Ich hoffe, ihr könnt mir weiterhelfen.

Schon jetzt vielen Dank für eure Mühe!
muemmel
Posts: 23
Joined: 2002-08-18 14:54
 

Re: Performance

Post by muemmel »

Hi.

Ich hatte schonmal das Problem dass eine Version von PHP 4.3(ich meine es wäre Subversion 8 gewesen) im Zusammenspiel mit phpMyAdmin (funktionierte auch in eigenen PHP-Scripten) und nem MySQL Server 4.0 (Subversion 17 meine ich) dazu führte, dass bei einigen Großen (sprich: umfangreichen) Abfragen oder auch bei vielen kleinen Abfragen nen Fehler entsteht.

Resultat: Der entsprechende httpd-Prozess hing und lies sich nur manuell killen. Nen Update von (ich meine PHP wärs gewesen) auf ne neuere Version hat das Problem beseitigt.

Sorry, dass ich dir keine genaueren Auskünfte geben kann, aber das is schon ewig her (März diesen Jahres).
marky
Posts: 66
Joined: 2003-06-18 12:49
 

Re: Performance

Post by marky »

Also wie Ibot80 beschrieben hat, ist es bei mir tatsächlich auch.

Bevor ich jedoch ein Update wage und einen Serverausfall riskiere, möchte ich das Problem jedoch gerne näher eingrenzen. Jetzt ist meine Frage: Wie kann ich herausfinden, welche konkrete Anfrage zu diesem Prozess führte. Der Command "httpd" bedeutet ja nur, dass es sich um eine Seitenausgabe des Apache handelt. Wie kann ich aber feststellen, um welche Seite (z.B. "/home/www/web1/html/index.php") es geht? Kann man sich zu den einzelnen Prozessen derartige Details anzeigen lassen?

Danke!
Anonymous
 

Re: Performance

Post by Anonymous »

Ich habe inzwischen PHP Version 4.3.10 installiert und der Fehler erscheint nicht mehr. Woran es jetzt genau lag, kann ich nicht sagen.

Anscheinend tritt der Fehler aber bei "vielen" mysql Zugriffen auf, so wie Muemmel es beschrieben hat. Ich hatte vorher PHP 4.2.2. laufen und alles lief problemlos. Dann kam eine neue Website mit viel Traffic hinzu (25GB, keine Downloads) und der httpd Prozess hat sich "aufgehängt".
Post Reply