我的服务器在昨晚12:30左右没有回应。我今天早上发现它,甚至无法进入它。网络监视器告诉我我的CPU使用率是100%。我唯一能做的就是硬重启它。重新启动后,现在一切都好了。
但我认为潜在的问题仍然存在,因为我不知道昨晚哪个进程占用了如此高的CPU。
无论如何我可以通过流程找出历史CPU使用情况吗?或者如果没有,我该怎么做才能预防或至少监控并知道它?
我正在考虑每分钟将“top”命令结果保存到文件中,所以也许我能抓住它,但也许还有其他更好的想法?
非常感谢!
答案 0 :(得分:1)
有两个选项 - 首先,您可以启动定期CRON脚本,该脚本将每分钟或每5分钟检查一次CPU使用情况。可以使用以下任一命令确定系统的总体CPU使用率: top -bn1 | grep“Cpu(s)”| sed“s /.*, ([0-9。] )%* id。* / \ 1 /”| awk'{print 100 - $ 1}' 要么 mpstat | grep -A 5“%idle”|尾巴-n 1 | awk -F“”'{print 100 - $ 13}'a
脚本应该获得CPU使用率,并应检查CPU使用率是否超过阈值,如75%。如果发生这种情况,脚本可以将top命令(top -b -n 2)的输出转储到文件中。
第二个选项是使用一些开源监控工具,如monit(https://mmonit.com/monit/)。 Monit可用于监视系统CPU使用情况,如果CPU使用率超过阈值,它也可以编程为采取措施。