Apache保持失败,并不重新启动干净 – 地址已经在使用:make_sock:无法绑定到地址

我有一个运行CentOS 5.4的1GB内存的VPS

它也有plesk与大量wordpress网站运行没有问题 – 大部分时间。

最近,似乎每隔一段时间,apache似乎就要崩溃了。 如果你打电话给www.mysite.com似乎超时。

我尝试重新启动Apache,并得到以下错误。

Stopping httpd: [FAILED] Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs [FAILED] 

现在我知道100%除了apache以外没有其他服务在端口80上运行。 但是,apache似乎没有响应停止命令。 这几乎就像是陷入了僵局!

最终我发现我可以手动强制apache停止运行

 killall -9 httpd 

然后重新启动命令工作。

我的问题是:

1)什么会导致这样的事情发生? 据我所知,服务器没有得到任何主要的stream量。 2.)我可以在服务器上做什么来自动执行上面的命令,如果它发生在我不想手动执行的时候。

谢谢,

埃德

我有一个类似的问题,我正在运行一些插件,直到我诊断出哪个问题导致了,我用cron杀死并重新启动apache和mysql每小时。

这种问题(不能正常退出的进程)通常是在进程停止等待I / O(例如,来自networking连接,本地pipe道,文件系统等)时造成的。 你有时可以使用strace来弄清楚发生了什么事情,虽然有效地使用strace可能是一个完全不同的问题 。

以下ps命令行的输出可能很有趣:

 ps -e -o pid,wchan:20,cmd | grep httpd 

这会告诉你“进程正在hibernate的内核函数的名字”,这可能有助于指导你的调查。

我会查看所有Apacheconfiguration文件中的Listen指令,以确认您在端口80上只有一个侦听。在CentOS 6中,在ssl.conf中有一个指令,如果您将一个指令从另一个http.conf复制到CentOS如果你不小心的话,你会在443上跑到这个问题上。