PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache, besetzter Port, der eigentlich immer frei ist



sage
29.04.05, 09:41
Gruesse,
ich hab seit einiger Zeit folgendes Problem:
Alle 24h startet der cronjob den apache neu, aber in ca. 30% der Faelle wird er nur abgeschossen und kommt nicht wieder hoch.

error.log:
[Fri Apr 29 06:25:04 2005] [notice] caught SIGTERM, shutting down
[Fri Apr 29 06:25:05 2005] [crit] (98)Address already in use: make_sock: could not bind to port 80
Jedes Mal sehe ich nach, was denn nun anderes auf Port 80 laufen mag, aber natuerlich ist da nichts. Und es passiert ja auch nicht immer.
Aber immer nachsehen zu muessen, ob er heute auch wieder brav geladen hat nervt natuerlich.
Meine httpd.conf Syntax ist angeblich auch ok.

Jemand eine Ahnung, was das sonst noch sein koennte, so vom Prinzip her, oder soll ich gleich die httpd.conf rausruecken :)


MfG
Sage

Tomek
29.04.05, 10:09
Wenn Apache meldet:

[Fri Apr 29 06:25:05 2005] [crit] (98)Address already in use: make_sock: could not bind to port 80
Dann ist der definitiv belegt. Du kannst es auch überprüfen mit:

lsof -i :80
Warum startest du eigentlich den Apache-Server alle 24h neu?

sage
29.04.05, 10:31
Ja, ich weiss, dass da was sein muesste, aber... da ist definitiv nichts ausser dem Apache selbst!

Warum ich ihn neustarte... ehrlich gesagt dachte ich, das sollte standardmaessig so sein, weil naja, nach der Installation auf Debian wurde er eben alle 24h neugestartet, ohne dass ich das in Auftrag gegeben habe. Hab eben Debian vertraut :)
Wenn Apache das auch ohne schafft, nehm ich ihn am besten aus dem cron raus, oder?

Tomek
29.04.05, 10:33
Wenn Apache das auch ohne schafft, nehm ich ihn am besten aus dem cron raus, oder?
Entferne den Cronjob. Der Apache-Server muss nicht alle 24h neugestartet werden. logrotate macht je nach Einstellung einen täglich oder wöchentlich Reload des Apache-Servers.

marce
29.04.05, 10:56
vermutlich beissen sich da logrotate und Dein Script - also entweder oder...

wir setzen bei uns für's rotieren eigentlich immer eigene Scripte ein - aber wir verwenden auch nicht den in der Distri (und damit in logrotate meist schon fertig eingebauten) Apache...

Wie startetst Du ihn denn neu? mit start / stop oder mit restart?

Svenny
29.04.05, 10:57
wenn du das ding stoppst und im gleichen moment wieder startest könnte es sein dass der noch nicht komplett aus ist und einige childs da noch rumwurschteln und den port belegen.

also wenns überhaupt sein muss dann ne sleeptime reinbasteln

marce
29.04.05, 11:41
oder mir ./apachectl graceful - dafür wurde's erfunden ;-)

oracle2025
29.04.05, 14:49
Das Phänomen tritt auf, wenn ein Prozess der einen Socket oder wie auch immer das jetzt heißt vor dem Beenden nicht ordnungsgemäß geschlossen hat. Dann dauerts ein bisschen bis der Timeout greift, und den Socket wieder freigibt.

sage
01.05.05, 10:54
Das mit der Sleeptime scheint zu laufen, dank euch allen, habt mich wiedermal rausgezogen *knutsch* :)