0%

服务器CPU负载-设定自重启

问题描述:在编写系统程序中,出现bug导致系统CPU负载或者跑满了。导致客户端ssh无法链接上来。

解决办法:优化出问题的程序,设定CPU阔值,超过重启。

监控与重启:

创建监控脚本

1.创建脚本文件: 在根目录下创建一个新的脚本文件,例如 cpu_monitor.sh。

1
2
3
sudo nano /cpu_monitor.sh
# 或者
sudo vim /cpu_monitor.sh

2.编写以下脚本内容,THRESHOLD=9090代表CPU阔值上限为90%,超过就要重启。

1
2
3
4
5
6
7
8
#!/bin/bash
THRESHOLD=90
CPU_USAGE=$(mpstat 1 1 | awk '/Average/ {print 100 - $12}')

if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
echo "CPU usage is above $THRESHOLD%. Restarting server..."
sudo reboot
fi

3,保存退出后,执行授予权限:

1
sudo chmod +x /cpu_monitor.sh
1
sudo crontab -e

添加cron代码内容,每分钟检测一次:

1
* * * * * /cpu_monitor.sh

测试

安装 stress-ng

1
2
sudo yum install epel-release
sudo yum install stress-ng

查看服务器为几线程:

1
nproc

使用 stress-ng 设置 CPU 负载,如下第一个2代表两个线程,96代表是CPU负载接近96%,20s是定时器时长。

1
stress-ng --cpu 2 --cpu-load 96 --timeout 20s

等待一段时间 服务器重启就是成功了。

-------------本文结束感谢您的阅读-------------