我的服务器出了问题。CPU 有时会飙升至 100%,然后服务器崩溃,然后需要重新启动。
我尝试查看我当前的日志,但没有成功。
我希望每次某个进程使用了超过 40% 的 CPU 资源时都进行记录。
我读过有关 sar 解决方案的文章这里:
sar -u 1 0
但它没有设置记录内容的阈值。
理想情况下,这应该是持续运行的,以便我可以在下次服务器崩溃后看到导致崩溃的真正原因!
眼镜:
Ubuntu 12.04 LTS
CPU: 1 Core(s) 2048MB
CPU Flags: advcpu,acpi,pae,virtblk,virtio
答案1
根据以下结果:
https://stackoverflow.com/questions/9229333/how-to-get-overall-cpu-usage-eg-57-on-linux
我将安装 mpstat 程序,基于一些用户的建议:
mpstat | grep -A 5 "%idle" | tail -n 1 | awk -F " " '{print 100 - $ 12}'a
这将为您提供总 CPU 使用率,然后您可以将其用作脚本中的安全阈值来采取行动。
编辑:例如:
#!/bin/bash
while :
do PROC= ` mpstat | grep -A 5 "%idle" | tail -n 1 | awk -F " " '{print 100 - $ 12}'a` if [$PROC > 55]; then PS ua >> log.txt echo "---------" >> log.txt fi
Sleep 1 done
获得日志。
答案2
我很幸运能使用监控当服务器出现问题时进行记录和警报。
例如,您可以在配置文件中指定以下内容,以便在某个进程的 CPU 使用率超过 40% 时发出警报并记录:
if cpu is greater than 40% for 5 cycles then alert