有位同学的apache基本一天挂一次,重启httpd服务后正常。检查日志发现一个错误并且是经常性出现:child process * still did not exit, sending a SIGTERM
猜测问题应该出现在子进程中的MaxRequestsPerChild部分,检查他的工作方式:apachectl -l
是prefork模式,然后检查他的配置文件,发现MaxRequestsPerChild部分参数为0,想到有可能是内存泄露了。
对于他这个问题,继续跟进。淡定···
将MaxRequestsPerChild设置成非零值有两个好处:
可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
今天问题算是解决了:
发现日志说,写入访问日志或者是错误日志意外失败。
df -h 一看/var/logs 使用率已经100%了。那么再次检查httpd.conf文件,确定服务器上挂载的20多个站日志位置都位于此路径下,导致日志无法写入而系统崩溃。
通知它删减日志,运行看看。继续跟进···
过了好几天了,没听见他再反应服务器崩溃,那么可以确定,问题解决了。
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/352.html