![我们的 Red Hat Enterprise 5 服务器正在自行切换,直至死机 - 需要一个计划来检测原因](https://linux22.com/image/800690/%E6%88%91%E4%BB%AC%E7%9A%84%20Red%20Hat%20Enterprise%205%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%AD%A3%E5%9C%A8%E8%87%AA%E8%A1%8C%E5%88%87%E6%8D%A2%EF%BC%8C%E7%9B%B4%E8%87%B3%E6%AD%BB%E6%9C%BA%20-%20%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E8%AE%A1%E5%88%92%E6%9D%A5%E6%A3%80%E6%B5%8B%E5%8E%9F%E5%9B%A0.png)
在看似随机的时间间隔内,我们服务器上的内存使用量会超过最大可用内存量,并不断交换,直到 CPU 使用率也达到 100%。当交换内存用完时,它会开始终止进程,我们必须重新启动服务器。
当这种情况发生时,我们的网站和内部系统会变得无响应。此时我也无法通过 SSH 进入服务器,因此我无法识别正在终止它的进程。
我没有丰富的服务器管理经验,但我正在寻找如何检测问题的方法。请告诉我您可能需要哪些额外信息。
答案1
说实话,这可能是一个 fork-bomb(即一个进程无限地分叉子进程,从而耗尽资源)。也可能是内存泄漏类型的问题。
识别关键流程是关键。尝试以下方法:
下次重新启动服务器时,请以 root 身份打开控制台,但使用 renice 将其优先级设置为 -20。完成后,运行 (top 优先级为 -20) 并观察导致问题的原因。
这个命令应该可以做到这一点:
sudo bash
renice -n -20 -u root
top
当事情开始看起来很紧张时,请采取 killall 命令或杀死父级,然后杀死僵尸。
在 -20 时您应该能够通过 ssh 保持活动连接并仍然执行您的工作,其优先级与内核相同。
不要忘记查看日志(Web 服务器和 /var/log 中的其他日志),因为它们可以揭示很多信息。
如果您发现问题,请告诉我们问题是什么,以及您是否需要进一步的帮助和协助。
祝你好运。
参见 renice 手册页和 top 手册页。
答案2
安装(并仔细阅读文档!)sysstat
,进行配置并分析此类事件发生后收集的数据。
检查现有的安全策略(ulimit
针对不同用户启用 SELinux,...)。检查所有内容是否是最新的(程序故障肯定会导致这种情况)。
检查任何自制系统是否存在可能的循环或其他资源耗尽。 记录所有日志,甚至数据库等。