我有一个运行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上跑到这个问题上。