我是 Ubuntu 18.04 用户,在 OVHCloud 数据中心运行了 3 年,上面有 PHP 应用程序和 Mysql 服务器。2.5 年来,一切都很好,但在过去的 6 个月里,我遇到了一个奇怪的问题:
- 每个月的第四个星期日,晚上 10 点 30 分左右,我的平均负载就会变得非常高,超过 550,然后我的服务器就会崩溃。
发生这种情况时,我可以通过 ssh 登录,可以停止所有服务,但无法修复平均负载。我重新启动后,它又可以工作 4 周,然后问题再次出现。
有人能帮助我如何排除导致 CPU 平均负载极高的原因吗?以及为什么总是同时出现这种情况?
请看一下来自 htop 的这张图片:
谢谢
答案1
如果不是 OVH 的主机做了一些疯狂的事情,而是你的机器内部做了一些事情,那么这很可能是一项cron
工作。
我倾向于查找/etc/cron.d
任何包含配置为在那一天那个时间开始的作业的文件。
您可能grep "^30 22" /etc/cron.d/*
要查找以 (^) 开头的任何行,即 22(小时)后 30(分钟)。或者您可以逐行查看。我怀疑那里有些配置不当的工作。
或者它可能是您的 crontabcrontab -l
或 root 的 crontab中的某些内容sudo crontab -l
。
答案2
诊断此问题的一个方法是让dstat
终端而不是 htop 继续运行。它擅长发现一段时间内的顶级进程。
ssh 连接到服务器,然后在screen
或tmux
中byobu
使用以下所有选项启动 dstat:dstat --time --cpu --net --disk --sys --load --proc --top-cpu --top-mem --top-io
并让其保持运行。
它看起来是这样的:
当问题开始发生时,您可以回滚到问题开始的时间并查找异常进程。尤其是 CPU、内存和 IO 的“最昂贵”的最后三列。它还可以让您看到平均负载(中间几列)是立即失控,还是随着时间的推移而上升。可能会提供一些线索。