当每个进程的 CPU 使用率超过 40% 时如何记录

当每个进程的 CPU 使用率超过 40% 时如何记录

我的服务器出了问题。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

相关内容