Apache automatisch Restarten bei Fehlern?

medic

Registered User
Hallo zusammen,
ich habe in einigen Foren schon mal gelesen, dass es möglich ist mit einem Script den apache2 neu zu starten, wenn er sich aufgehängt hat, einen Fehler verursacht hat, wie auch immer.

Dieses Script soll man dann per Cron jede Minute ausführen.

Leider habe ich das besagte Script nicht mehr gefunden, hat jemand von euch eine Idee wie dieses Script ausgesehen hat, beziehungsweise wo man so ein Script finden kann?

Bin euch für jede Hilfe dankbar.

mfg
medic
 
Definiere doch mal Fehler ein bisschen genauer. Ich habe vielleicht einen übertriebene Auffassung von Fehler, aber für mich hört es sich als wolltest du mit Schroht auf Spatzen schießen. Ich muss außer wenn ich die Conf ändere oder wegen dem logrotate den Apache nie neustarten.
 
Naja, ich habe ein Script laufen, welches Webspace an User verteilt.

Das hat in letzter Zeit auch wirklich super funktioniert, aber seit vorgestern, seit S4Y diese ROuting Probleme hatte, ist der Apache oftmal wirklich schnell und dann komm ich mir vor als würde ich mit einem 6kb Modem vor dem Ding sitzen und noch schlimmer.

Gestern blieb lauf S4Y ja der Apache hängen, ich versteh nur nicht wieso, in den error logs von apache steht nichts drinnen. Aber wenn er langsamer wird und ich restarte ihn, dann klappt alles wie vor dem Problem mit S4Y, aber leider auch nicht wirklich lange.

Wie kann man denn die Prozesse anzeigen, beziehungsweise kann man irgendwie heraus finden, wer dem server die kapazität raubt?

Danke für eure Hilfe.
mfg
medic
 
Ich hatte mal so ein Script als 24Stunden-Online-Bleiben bei meinem Linux Router.

Wenn ich mich recht entsinne wars ca so:

Code:
test -e /pfad/zur/pid-datei.pid | /etc/init.d/apache2 restart
 
Lass uns doch anstatt das Synthom zu behandeln die Ursache suchen!

Wenn der Apache sehr langsam ist dann gib doch mal top und ps ax ein und poste die Ausgabe hier.
 
Okay, ich habe mal top ausgeführt und bekomme da folgende Ausgaben:

Code:
top - 19:59:40 up 9 days,  7:21,  1 user,  load average: 0.12, 0.26, 0.21
Tasks:  87 total,   1 running,  85 sleeping,   0 stopped,   1 zombie
Cpu(s):  2.0% us,  0.3% sy,  0.0% ni, 97.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   3083260k total,  2955308k used,   127952k free,   196572k buffers
Swap:  2040232k total,    11504k used,  2028728k free,  2356832k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18856 www-data  15   0 26240  11m 3800 S  0.7  0.4   0:00.15 apache2
18774 root      16   0  1944  948  736 R  0.3  0.0   0:00.18 top
18796 www-data  15   0 25980  10m 3720 S  0.3  0.4   0:00.20 apache2
18905 www-data  17   0 25832  10m 3708 S  0.3  0.3   0:00.03 apache2
    1 root      16   0  1588  504  448 S  0.0  0.0   0:01.52 init
    2 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:01.97 ksoftirqd/0
    4 root      RT   0     0    0    0 S  0.0  0.0   0:00.11 watchdog/0
    5 root      10  -5     0    0    0 S  0.0  0.0   0:03.20 events/0
    6 root      18  -5     0    0    0 S  0.0  0.0   0:00.00 khelper
    7 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kthread
   25 root      10  -5     0    0    0 S  0.0  0.0   0:00.25 kblockd/0
   71 root      15   0     0    0    0 S  0.0  0.0   0:09.20 pdflush
   72 root      15   0     0    0    0 S  0.0  0.0   0:01.12 pdflush
   74 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 aio/0
   73 root      15   0     0    0    0 S  0.0  0.0   0:04.65 kswapd0
  666 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kseriod
  727 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 ata/0
  732 root      16  -5     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_0
  733 root      16  -5     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_1
  797 root      10  -5     0    0    0 S  0.0  0.0   1:35.86 md1_raid1
  808 root      15   0     0    0    0 S  0.0  0.0   0:51.48 kjournald
 1208 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 md0_raid1
 1243 root      15   0     0    0    0 S  0.0  0.0   0:00.00 kjournald
 1576 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 khubd
 2482 root      15   0  2328  744  616 S  0.0  0.0   0:06.70 syslogd
 2485 root      16   0  2412 1276  348 S  0.0  0.0   0:00.04 klogd
 2490 root      30  15 27832  23m 2340 S  0.0  0.8   0:00.36 spamd
 2498 clamav    17   0 29524  17m  884 S  0.0  0.6   0:07.62 clamd
 2539 clamav    16   0  4164 1012  844 S  0.0  0.0   0:00.05 freshclam
 2544 root      19   0  1752  384  316 S  0.0  0.0   0:00.00 courierlogger
 2545 root      16   0  1868  504  412 S  0.0  0.0   0:00.00 authdaemond.pla
 2551 root      16   0  2552  668  584 S  0.0  0.0   0:00.00 couriertcpd
 2553 root      24   0  1756  472  400 S  0.0  0.0   0:00.00 courierlogger
 2555 root      16   0  2056  540  440 S  0.0  0.0   0:00.17 authdaemond.pla
 2556 root      16   0  2056  540  440 S  0.0  0.0   0:00.18 authdaemond.pla
 2557 root      16   0  2056  540  440 S  0.0  0.0   0:00.24 authdaemond.pla
 2558 root      16   0  2056  540  440 S  0.0  0.0   0:00.17 authdaemond.pla
 2559 root      16   0  2056  540  440 S  0.0  0.0   0:00.20 authdaemond.pla
 2569 root      16   0  2556  668  584 S  0.0  0.0   0:00.00 couriertcpd
 2571 root      19   0  1752  468  400 S  0.0  0.0   0:00.00 courierlogger
 2577 root      16   0  2552  664  584 S  0.0  0.0   0:00.44 couriertcpd
 2579 root      25   0  1756  472  400 S  0.0  0.0   0:00.40 courierlogger
 2590 root      16   0  2552  664  584 S  0.0  0.0   0:00.00 couriertcpd
 2592 root      25   0  1752  468  400 S  0.0  0.0   0:00.00 courierlogger
 2726 Debian-e  16   0  9188 1128  896 S  0.0  0.0   0:00.06 exim4
 2732 root      16   0  2320  704  620 S  0.0  0.0   0:01.37 inetd
 3384 root      15   0 42900  848  612 S  0.0  0.0   0:32.88 nscd
 3403 root      16   0  3436  704  612 S  0.0  0.0   0:01.13 sshd
 3408 root      16   0  2172  912  320 S  0.0  0.0   0:26.78 mdadm
 3461 daemon    16   0  1576  292  280 S  0.0  0.0   0:00.00 atd
 3467 root      16   0  1632  528  456 S  0.0  0.0   0:01.72 cron
 3574 root      16   0  1584  412  408 S  0.0  0.0   0:00.00 getty

und mit dann bekomme ich bei ps ax noch folgende Ausgabe:
Code:
 PID TTY      STAT   TIME COMMAND
    1 ?        S      0:01 init [2]
    2 ?        S      0:00 [migration/0]
    3 ?        SN     0:01 [ksoftirqd/0]
    4 ?        S      0:00 [watchdog/0]
    5 ?        S<     0:03 [events/0]
    6 ?        S<     0:00 [khelper]
    7 ?        S<     0:00 [kthread]
   25 ?        S<     0:00 [kblockd/0]
   71 ?        S      0:09 [pdflush]
   72 ?        S      0:01 [pdflush]
   74 ?        S<     0:00 [aio/0]
   73 ?        S      0:04 [kswapd0]
  666 ?        S<     0:00 [kseriod]
  727 ?        S<     0:00 [ata/0]
  732 ?        S<     0:00 [scsi_eh_0]
  733 ?        S<     0:00 [scsi_eh_1]
  797 ?        S<     1:35 [md1_raid1]
  808 ?        S      0:51 [kjournald]
 1208 ?        S<     0:00 [md0_raid1]
 1243 ?        S      0:00 [kjournald]
 1576 ?        S<     0:00 [khubd]
 2482 ?        Ss     0:06 /sbin/syslogd
 2485 ?        Ss     0:00 /sbin/klogd
 2490 ?        SNs    0:00 /usr/sbin/spamd --create-prefs --max-children 1 --helper-home-dir -d --pidfile=/var/run/spamd.pid
 2498 ?        Ss     0:07 /usr/sbin/clamd
 2539 ?        Ss     0:00 /usr/bin/freshclam -d --quiet -p /var/run/clamav/freshclam.pid
 2544 ?        S      0:00 /usr/sbin/courierlogger -pid=/var/run/courier/authdaemon/pid -start /usr/lib/courier/authlib/authdaemond.plain
 2545 ?        S      0:00 /usr/lib/courier/authlib/authdaemond.plain
 2551 ?        S      0:00 /usr/sbin/couriertcpd -address=0 -stderrlogger=/usr/sbin/courierlogger -maxprocs=40 -maxperip=20 -pid=/var/run/courier/imapd.pid -
 2553 ?        S      0:00 /usr/sbin/courierlogger imaplogin
 2555 ?        S      0:00 /usr/lib/courier/authlib/authdaemond.plain
 2556 ?        S      0:00 /usr/lib/courier/authlib/authdaemond.plain
 2557 ?        S      0:00 /usr/lib/courier/authlib/authdaemond.plain
 2558 ?        S      0:00 /usr/lib/courier/authlib/authdaemond.plain
 2559 ?        S      0:00 /usr/lib/courier/authlib/authdaemond.plain
 2569 ?        S      0:00 /usr/sbin/couriertcpd -address=0 -stderrlogger=/usr/sbin/courierlogger -stderrloggername=imapd-ssl -maxprocs=40 -maxperip=20 -pid=
 2571 ?        S      0:00 /usr/sbin/courierlogger imapd-ssl
 2577 ?        S      0:00 /usr/sbin/couriertcpd -pid=/var/run/courier/pop3d.pid -stderrlogger=/usr/sbin/courierlogger -maxprocs=40 -maxperip=4 -nodnslookup
 2579 ?        S      0:00 /usr/sbin/courierlogger courierpop3login
 2590 ?        S      0:00 /usr/sbin/couriertcpd -pid=/var/run/courier/pop3d-ssl.pid -stderrlogger=/usr/sbin/courierlogger -stderrloggername=pop3d-ssl -maxpr
 2592 ?        S      0:00 /usr/sbin/courierlogger pop3d-ssl
 2726 ?        Ss     0:00 /usr/sbin/exim4 -bd -q30m
 2732 ?        Ss     0:01 /usr/sbin/inetd
 3384 ?        Ss     0:32 /usr/sbin/nscd
 3403 ?        Ss     0:01 /usr/sbin/sshd
 3408 ?        Ss     0:26 /sbin/mdadm -F -i /var/run/mdadm.pid -m [email][/email] -f -s
 3461 ?        Ss     0:00 /usr/sbin/atd
 3467 ?        Ss     0:01 /usr/sbin/cron
 3574 tty1     Ss+    0:00 /sbin/getty 38400 tty1
 3575 tty2     Ss+    0:00 /sbin/getty 38400 tty2
 3578 tty3     Ss+    0:00 /sbin/getty 38400 tty3
 3579 tty4     Ss+    0:00 /sbin/getty 38400 tty4
 3580 tty5     Ss+    0:00 /sbin/getty 38400 tty5
 3581 tty6     Ss+    0:00 /sbin/getty 38400 tty6
32683 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe
32719 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe
32720 ?        S     38:54 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --port=
32721 ?        S      0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
 5320 ?        SN     0:07 spamd child
 7789 ?        Ss     0:02 apache2 -k start
18404 ?        S      0:01 proftpd: bcmtherip - 85.22.0.15: STOR navigation_right_head_link.htm
18531 ?        S      0:00 proftpd: logdolymp - 80.130.232.45: IDLE
18735 ?        Ss     0:00 sshd: root@pts/0
18753 pts/0    Ss     0:00 -bash
18800 ?        S      0:00 proftpd: logdolymp - 80.130.232.45: IDLE
18976 ?        S      0:00 /usr/bin/perl /usr/local/confixx/pipelog.pl
18977 ?        S      0:00 apache2 -k start
18978 ?        S      0:00 apache2 -k start
18979 ?        S      0:00 apache2 -k start
18980 ?        S      0:00 apache2 -k start
18991 ?        S      0:00 apache2 -k start
18996 ?        S      0:00 apache2 -k start
18998 ?        S      0:00 apache2 -k start
19000 ?        S      0:00 apache2 -k start
19002 ?        S      0:00 apache2 -k start
19005 ?        S      0:00 apache2 -k start
19008 ?        S      0:00 apache2 -k start
19010 ?        S      0:00 apache2 -k start
19011 ?        S      0:00 apache2 -k start
19016 ?        S      0:00 apache2 -k start
19040 ?        S      0:00 proftpd: bcmtherip - 85.22.0.15: IDLE
19046 pts/0    R+     0:00 ps ax

Danke für eure Hilfe, ich hoffe mir kann da jemand weiter helfen.

mfg
medic

MOD: Bitte CODE-Tags nutze!
 
Last edited by a moderator:
Zuerst solltest du mal deinen Zombie-Prozess killen.

CPU-Auslastung und Ram sehen gut aus. Wie ist es denn mit der Maximalenanzahl an Prozessen vom Apache, sind vielleicht zu viele Leute auf dem Server? Ich bin kein Apache Spezialist aber ich denke das könnte etwas sein. Natürlich wenn nur du auf die Homepage gehst ist der Ansatz falsch!
 
Der Zombi Prozess hat sich wenige Sekunden später selbst beendet, zumindestens laut Anzeige.

Was meinst du denn mit zu viele User?

Ich habe auf dem Server bereits 400 User liegen, dazu verwende ich diesen Server eigentlich auch.

mfg
medic
 
Ein Apache Prozess darf/kann so und so viele Anfragen beantworten, wenn jetzt zu viele Anfragen kommen so das jeder Prozess ausgelastet ist müsste man die Anzahl der Prozesse erhöhen.
Ist nur eine Vermutung ich hatte so Probleme noch nicht.
 
Mal wieder mein Tipp: "monit"
Überwacht nicht nur den Apachen, sondern kann auch noch andere Serverdienst checken. Natürlich ist eine Fehleranalyse trotzdem anzuraten.
 
Prozesse erhöhen ist gut gesagt, kann man das so einfach??

Ich meine im Normalfall haben solche Limitierungen ja auch einen Sinn, oder? :o

Das mit dem monit werde ich mir auch mal genauer ansehen, mein Problem ist im Moment aber eher mal einen stabilden Betrieb zu schaffen.

Bin euch für jede weitere Hilfe dankbar.

mfg
medic
 
Zwei Sachen:

1. Was verbraucht bei Dir eigentlich den ganzen Arbeitsspeicher?
Bei deinem "top" konnte ich keinen Prozess finden der soviel Arbeitsspeicher verbraucht, aber oben kann man ja lesen, dass nur 128MB frei sind.

2. Die Anzahl der maximalen Apacheprozesse kann man in der httpd.conf schon höher setzen, natürlich nicht ins Unendliche gehen. ;)
 
Last edited by a moderator:
Das mit dem Arbeitsspeicher versteh ich auch noch nicht so wirklich.

Der ist eigentlich permanent im oberen Bereich und ich hab keine Ahnung wieso.

Wie gesagt die Prozesse sind ja diesbezüglich auch lächerlich, da wird so gut wie kein Speicher verbraucht.

Hat jemand eine Idee dazu?

mfg
medic
 
Steht was im Syslog?
Etwas wie "Cannot allocate memory"?

Dumme Frage aber es handelt sich bei deinem Server wirklich um einen realen Server und nicht etwa um einen VServer oder so. Man weiß ja nie. ;)
 
Also ja, ist ein Root Server bei S4Y, ich nehme mal schon an, das die auch wirklich das bestellte zur Verfügung stellen. :D

Also zu free -m bekomme ich folgende Meldung:
Code:
             total       used       free     shared    buffers     cached
Mem:          3010       2874        136          0        163       2342
-/+ buffers/cache:        368       2642
Swap:         1992         11       1981

Ich versteh das überhaupt nicht, der Mem. ist so voll als würde da eine irre 3D Anwendung laufen. :confused:
Aber das ist nur mein Server, junge junge.

Vorallem, wenn Mem. belegt wird, müssten doch die verbrauchenden Tasks mit "top" angezeigt werden, oder??

Achja, ich hab eben in die syslog geschaut, da steht eine Menge drin, aber nichts was auch nur annähernd für eine hohe Auslastung oder Ähnliches stehen würde.

mfg
medic
 
Last edited by a moderator:
Ja, bei dieser Anzeige, aber wieso sthet denn bei top, dass fast alle 3 Gb in Use sind?? (siehe Seite1)

Da stimmt doch dann irgend etwas nicht, oder??

mfg
medic
 
"free -om" dürfte laut man-pages dein realen Speicherverbrauch anzeigen.
Ich bin gerade am überlegen warum bei Dir soviel gecachet/gebuffert wird.
Bis jetzt kann ich mir keinen Reim darauf machen.
 
Ist vielleicht ein Ram-Riegel defekt oder nur eine Flanke auf die dann nichts adressiert werden kann?
 
Back
Top