Apache-Neustartfehler

331
Paddington

Mein Server hatte eine hohe Last und ich habe Apache2 angehalten, bis die Last mit dem Killall -9 Apache2 zurückgegangen ist. Beim Start von Apache2 habe ich den Fehler erhalten:

* # /etc/init.d/apache2 restart * Neustart des Webservers apache2 httpd (pid 4457?) läuft nicht (98) Adresse wird bereits verwendet: make_sock: Es konnte keine Bindung an die Adresse 0.0.0.0:80 hergestellt werden down Logs können nicht geöffnet werden *

Ich lsof dann | grep "* .www" und brach den Prozess über Port 80 ab.

Meine Frage ist, wie kann ein Prozess Port 80 noch verwenden, nachdem ich den Befehl Kill All ausgeführt habe?

0
Die Verwendung von "kill -9" anstelle von "service httpd stop" (oder gleichwertig) ist ein bisschen wie das Abfeuern Ihres Hauses aus dem Orbit, um eine Schreibtischlampe auszuschalten. RedGrittyBrick vor 11 Jahren 1
Unter hoher Last dauert es sehr lange, bis der Apache-Prozess ordnungsgemäß heruntergefahren wird. Sie sagen also, der Befehl kill ist ein Problem für sich? Paddington vor 11 Jahren 0
Ja, bei Verwendung von "killall -9 ..." können Probleme auftreten. kill -9 (SIGKILL) ist der extremste Weg, um einen Prozess zu stoppen und sollte ein letzter Ausweg sein. Es gibt andere Signale (SIGINT, SIGQUIT usw.), die Sie senden können, die dem Prozess die Möglichkeit geben, Ressourcen zu bereinigen und freizugeben es hat gesperrt oder zugewiesen. Zweitens müssen Sie wahrscheinlich nur den einen Prozess stoppen, der Port 80 überwacht. Um zu verhindern, dass weitere Anforderungen akzeptiert werden, müssen Sie nicht alle anderen Arbeitsprozesse beenden. RedGrittyBrick vor 11 Jahren 0

1 Antwort auf die Frage

0
RedGrittyBrick

http://httpd.apache.org/docs/2.2/stopping.html

Um Apache zu stoppen oder neu zu starten, müssen Sie ein Signal an die laufenden httpd-Prozesse senden. Es gibt zwei Möglichkeiten, die Signale zu senden. Erstens können Sie den Befehl unix kill verwenden, um Signale direkt an die Prozesse zu senden. Sie werden feststellen, dass viele ausführbare httpd-Dateien auf Ihrem System ausgeführt werden. Sie sollten jedoch keine Signale an die httpd-Datei senden, deren PID sich in der Pid-Datei befindet. Das heißt, Sie sollten niemals Signale an jeden Prozess außer dem übergeordneten Prozess senden müssen. Es gibt vier Signale, die Sie dem übergeordneten Element senden können: TERM, USR1, HUP und WINCH. Diese werden gleich beschrieben.

Um ein Signal an das übergeordnete Element zu senden, geben Sie einen Befehl aus, z. B .:

 kill -TERM `cat /usr/local/apache2/logs/httpd.pid` 

Meine Betonung