上面的 CPU 使用率图表是通过运行生成的传感器在我的 Linux 机器上运行一整夜。请注意,10 分钟的活动爆发消耗了多达 40% 的 Xeon。除了可能使用 Debian 的单用户桌面设置默认配置的管理进程外,机器应该一整夜处于空闲状态。窗口高度为 67%(由于最右侧的短暂峰值)。
我怎么能够找出哪些进程导致了这些长达 10 分钟的 CPU 使用率激增?理想情况下,每个进程都有类似的图表会很有帮助。
答案1
从图表来看,我觉得 CPU 使用率较高的时间段发生在整点或半点,这表明有某些程序通过 cron 运行。如果您想通过该路径开始调查,我建议您从那里开始。
也就是说,考虑到高 CPU 利用率的爆发时间相当长(在你的情况下是十分钟),你可以简单地通过自己的 cron 作业转储系统状态明天早上进行分析。
我建议使用top
批处理模式(-b
),迭代次数为 1(-n 1
),因此您可以在 /etc/cron.d 中的新文件中添加类似以下内容:
* * * * * root top -b -n 1 > /var/log/processes/$(date +%F_%R)
记得创建一个目录 /var/log/processes 以便写入。
早上,从 CPU 使用率较高的时期中挑选出一个或几个这样的文件,并仔细查看它们。
默认排序顺序似乎是将当前 CPU 利用率最高的放在最上面,这应该适合您的情况。否则,您只需将文件导入电子表格应用程序(它应该可以很好地导入固定宽度数据)并按 %CPU 字段排序。一旦您知道二进制文件的名称,您就可以在磁盘上查找它(包括使用它dpkg -S
来确定它属于哪个包),或者使用类似的东西修改上述内容pstree
以了解导致调用该特定二进制文件的原因。
反过来,这应该可以让你很好地了解哪些实际程序(而不仅仅是进程)正在占用 CPU,从而让你确定它是否是一个问题,如果你认为它是一个问题,那么你就可以让你知道如何关闭它。
答案2
答案3
我用了https://sealion.com/当它首次启动时,它会监视和记录系统信息,例如捕获 top 的输出等。也许它会给你提供追踪问题所需的信息。