Page 2 of 2

Re: Den Webserver automatisch neu starten wenn er "hängt&am

Posted: 2004-02-17 20:09
by Outlaw
Jetzt nochmal zum mitschreiben:

Ich habe ja auch das vermutete Logrotateproblem, da ich den Fehler meist um 0:15 Uhr bekomme (warum auch immer um 0:15 ??). Jedenfalls habe ich gesehen, daß seit dem Upgrade auf SuSE 8.2 die Logs 4MB groß werden und hab das mal wieder verkleinert.

Wenn ich nun aus dem Reload einen Restart mache, wieso dann nur beim 1. Eintrag ?? (im LogRotate Apache) Das steht doch 4x drin ....

Zudem hatte ich damals ein anderes Problem, als ich noch keine Zwangsresets des Apachen (per Kill) gemacht habe, daß nach einigen Tagen der Apache trotzdem wieder Urlaub im Nirvana gemacht hat, weil die Resourcen bei einem Restart nicht komplett freigegeben werden und sich dieses beim Restart gehörig breit macht, was zur Folge hat, daß irgendwann wieder nix geht. Ich konnte dies nur dadurch beheben, in dem ich auch die Resourcen über ne Skripterweiterung beseitigt habe.

Ich habe dann auch mal den Test manuell gemacht und zich mal den Apachen restartet und siehe da, da waren zich "Reste" noch im Speicher.

Da ich nich so den Plan habe, hier mal mein momentanes Skript, was im cron.hourly gestartet wird (habe dann zwar jede volle Stunde 3 bis 4 Sekunden Pause auf dem Apachen aber seitdem kann ich wieder ruhig schlafen):

Code: Select all

#!/bin/bash

/usr/bin/killall -9 httpd;
/cronfiles/apacherestart;
/usr/sbin/rcapache start;
Das obige nennt sich bei mir apachecheck und is im cron.hourly und das untere is das skript apacherestart:

Code: Select all

#!/usr/bin/perl
system("killall -9 httpd");
sleep 1;
$tmp = `/usr/bin/ipcs -s | grep wwwrun`;
@tmp= split(/n/,$tmp);
foreach $tmp (@tmp)
        {
        $tmp =~ s/       {1,}/ /g;
        $pid = (split(/ /,$tmp))[1];
        system("/usr/bin/ipcrm sem $pid");
        }
Vielleicht seht Ihr ja, was ich meine. Wenn ich den Apachen über die Shell 20x restarte, dann findet die Routine 20 Instanzen (??) und killt diese.

Ich will dieses blöde Skript auch nicht mehr aber im Logrotate von Reload auf Restart gehen, traue ich mich auch nicht, wel es das Problem anscheinend nur verzögert.

Gruß Outi

Re: Den Webserver automatisch neu starten wenn er "hängt&am

Posted: 2004-02-27 08:49
by distanzcheck
soweit klappt nun alles bis darauf das die apachecheck1.txt nicht gefunden wird

Code: Select all

/etc/cron.hourly/apachecheck: line 15: /test/apachecheck2.txt: No such file or directory
meine apachecheck

Code: Select all

#!/bin/bash
if [ `ps -ef | grep -v "grep" | grep -c "httpd"` -gt 0 ]; then
if [ `wget "http://www.server.de/" --delete-after 2>&1 | grep -c "200 OK"` -eq 1 ]; then echo "apache ok";
else
echo "apache has died...";
killall httpd
sleep 10;
killall -9 httpd;
rcapache start;
sendmail webmaster@server.de < /test/apachecheck1.txt
fi
else
echo "apache dead..";
rcapache start;
sendmail webmaster@server.de < /test/apachecheck2.txt
fi
die apachecheck1 und 2 txt habe ich ins verzeichniss von web1 /html/test gepackt, müssen die woanders hin ?

Dirk

Re: Den Webserver automatisch neu starten wenn er "hängt&am

Posted: 2004-02-27 12:27
by distanzcheck
neu gestartet wird der Apache wenn er down ist, nur das mit den mails dann klappt nicht. Muß irgendwas am pfad falsch sein

Dirk

EDIT: klappt nun alles

Dirk

Re: Den Webserver automatisch neu starten wenn er "hängt&am

Posted: 2004-03-10 07:55
by distanzcheck
soweit wenn ich alles auf der konsole eingebe klappt alles nur wenn ich den apachecheck per cron aufrufen bekomme ich diese mail von root

Code: Select all

/var/backup/apachecheck: line 14: rcapache: command not found
/var/backup/apachecheck: line 15: sendmail: command not found
muß ich da die kompletten pfade mit angeben ?
so sieht meine apachecheck bisher aus

Code: Select all

#!/bin/bash
if [ `ps -ef | grep -v "grep" | grep -c "httpd"` -gt 0 ]; then
if [ `wget "http://www.server.de/" --delete-after 2>&1 | grep -c "200 OK"` -eq 1 ]; then echo "apache ok";
else
echo "apache has died...";
killall httpd
sleep 10;
killall -9 httpd;
rcapache start;
sendmail webmaster@server.de < /var/backup/test/apachecheck1.txt
fi
else
echo "apache dead..";
rcapache start;
sendmail webmaster@server.de < /var/backup/test/apachecheck2.txt
fi
Dirk

Re: Den Webserver automatisch neu starten wenn er "hängt&am

Posted: 2004-03-10 08:06
by captaincrunch
Wer keine absoluten Pfade in Scripten nutzt ist selbst Schuld.

Re: Den Webserver automatisch neu starten wenn er "hängt&am

Posted: 2004-03-10 10:19
by distanzcheck
so das mit den direkten aufruf geht nun.

habe aber nun noch ein anderes Problem:

die apachecheck liegt im Verzeichniss /var/backup/apachecheck

habe mal Testweise einen Cronjob per Webmin alle 15 Minuten laufen welcher die apachecheck aufruft.

nun zum Problem, wenn ich per rcapache stop den apachen anhalte und dann manuell den cronjob per webmin mit Jetzt Ausführen aufrufe wird der apache gestartet und ich bekomme eine entsprechende mail.

wenn ich aber den apachen stoppe und warte bis der chronjob automatisch ausgeführt wird, dann wird der apache nicht gestartet.

Was ist da faslch ?

Dirk

Re: Den Webserver automatisch neu starten wenn er "hängt&am

Posted: 2004-03-12 04:39
by dirk1205
wie muss ich denn den befehl in cron eintragen damit er automatisch läuft?
wenn ich so abrufe geht alles.
ich meine auch ich habe ihn richtig in cron eingetragen.
aber cron spielt es einfach nicht ab :?

Re: Den Webserver automatisch neu starten wenn er "hängt&am

Posted: 2004-03-12 08:00
by distanzcheck
so bei mir läuft nun alles wunschgemäß.

Dirk

Re: Den Webserver automatisch neu starten wenn er "hängt&am

Posted: 2004-03-13 10:03
by distanzcheck
nee doch nicht, bekomme diese fehlermeldung an root

Code: Select all

apache dead..
Starting httpd [ PERL PHP4 SSL ]/etc/init.d/apache: line 121: startproc: command not found
stty: standard input: Invalid argument
..done
Apache läuft kurz an und geht dann direkt wieder down

Dirk

Re: Den Webserver automatisch neu starten wenn er "hängt&am

Posted: 2004-03-13 14:05
by distanzcheck
habe nunmal die apachecheck so abgeändert:

Code: Select all

#!/bin/bash
if [ `ps -ef | grep -v "grep" | grep -c "httpd"` -gt 0 ]; then
if [ `wget "http://www.server.de/" --delete-after 2>&1 | grep -c "200 OK"` -eq 1 ]; then echo "apache ok";
else
echo "apache has died...";
killall httpd
sleep 10;
killall -9 httpd;
/usr/sbin/apachectl start;
/usr/sbin/sendmail webmaster@server.de < /var/backup/test/apachecheck1.txt
fi
else
echo "apache dead..";
/usr/sbin/apachectl start;
/usr/sbin/sendmail webmaster@server.de < /var/backup/test/apachecheck2.txt
fi
So scheint er sersteinmal zu funktionieren, kann man da noch was verbessern ?

Dirk