我有一台运行 Digital Ocean 的 Debian 7 x64 机器,每 30 分钟 CPU 使用率就会达到 100%,持续约 1 分钟。几天前,这种情况持续了几个小时,所以服务器最终崩溃了,我不得不修复我的 Mysql 数据库。该服务器是一个运行 apache2 和 Mysql 的纯 Web 服务器。
我尝试跟踪哪些进程使用了 CPU,但没有成功。我使用的脚本:
#!/bin/sh
while true; do ps -A -eo pcpu,pid,user,args | sort -k 1 -r | head -3 >>
proclog.txt; echo "\n" >> proclog.txt; sleep 2; done
当这种情况发生时,我也在监控 htop,但即使 htop 的 CPU 计量器显示恒定的 100%,顶级进程的 CPU 使用率也没有达到约 15%。htop 配置为显示所有用户的进程、用户线程和内核线程。
编辑:通过在预期的 100% 使用率之前停止 Apache2 和 Mysql,我可以说两者都不对此负责。无论如何,100% 的使用率都会发生。
以下是过去几个小时的图表:
答案1
我想你的机器是一台虚拟机?
然后,您可能会看到这些峰值,这是由于您的机器所运行的硬件资源所致。
我猜这是 syswait 或 iowait 类型的峰值,您的机器必须等待虚拟化主机完成其任务。在这种情况下,您将不会在 htop/atop/... 中看到任何东西,因为您的机器实际上没有做任何事情。
由于这种情况经常发生,我建议在运行你的机器的主机上使用某种 cron-job 来执行大量的 IO。
也许您安装/使用了 atop,它还会记录系统统计信息以供以后分析。祝你好运。