我的服务器装有 CentOS 6.2、apache 2.2、php 5.3、mysql 5.1。服务器安装在 KVM 容器中。
Apache 有时会停止运行。它只是停止接受连接。看起来它已经达到ServerLimit
并保持已接受的连接打开。
我认为奇怪的是service httpd restart
服务器再次停机非常快。它可能只接受 1-2 秒的连接。然后再次停机。但重启后它可以工作几个小时而不会出现问题。或者可以在几分钟内再次停机。但这不是几秒钟后的事情service httpd restart
。
另一个值得注意的事情是,服务器停止后,我无法通过 ssh 连接到它。但如果我已经连接,我可以输入命令。但是,如果我输入 ie,service httpd restart
系统执行我的命令会非常慢(但 CPU 是空闲的,内存也相当空闲)。所以,看起来服务器无法分配一些资源并等待它。但我不确定它到底在等待什么。
有一些变量sysctl -a
在服务器工作期间发生变化
服务器名称/变量/
服务器设置
ServerLimit 140
MaxClients 128
MinSpareServers 5
MaxSpareServer 10
MaxRequestsPerChild 4000
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 10
将 keepAlive 设置为 off 没有帮助
更新
我想我知道哪里出了问题。看起来主机的 SELinux 由于某些原因随机阻止了 kvm-guest 写入磁盘。可能是因为我没有使用 libvirt 池,而只是使用 lvm-volumes 向客户机添加磁盘设备。现在我只需要等待它再次发生并检查日志以确保无误。
更新 2
不,它不是 SELinux。问题仍未解决。有任何想法吗?
答案1
尝试降低:MinSpareServers 5 和 MaxSpareServer 10。另外请告诉我们您有多少 RAM?
答案2
这是 iptables 的问题。我不确定到底是什么问题以及为什么会出现这种情况...但是当我将规则移至-A INPUT -i lo -j ACCEPT
所有其他规则的顶部时,它开始正常工作并且再也没有出现过此问题(在此之前,第一条规则是关于 eth0 的)。