全球主机交流论坛

标题: 判断CPU60秒内连续占用大于80%重启NGINX的shell脚本咋写? [打印本页]

作者: shuishui    时间: 2022-3-9 12:31
标题: 判断CPU60秒内连续占用大于80%重启NGINX的shell脚本咋写?
宝塔判断CPU60秒内连续占用大于80%重启NGINX的shell脚本咋写?
作者: 笑花落半世琉璃    时间: 2022-3-9 12:32
我用的哪吒有现成的
作者: shuishui    时间: 2022-3-9 12:34
笑花落半世琉璃 发表于 2022-3-9 12:32
我用的哪吒有现成的

探针?
作者: mingxingye    时间: 2022-3-9 12:42
本帖最后由 mingxingye 于 2022-3-9 13:07 编辑
  1. mode="cpu"  #判断服务器负载方式 load负载法  cpu  CPU百分比法  只能选一个
  2. if [ "$mode" = "cpu" ];
  3. then
  4. check=80   #5秒内CPU连续超过80 重启NG【可以根据您的服务器负荷情况调整】
  5. #系统空闲时间
  6. TIME_INTERVAL=60
  7. time=$(date "+%Y-%m-%d %H:%M:%S")
  8. LAST_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
  9. LAST_SYS_IDLE=$(echo $LAST_CPU_INFO | awk '{print $4}')
  10. LAST_TOTAL_CPU_T=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
  11. sleep ${TIME_INTERVAL}
  12. NEXT_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
  13. NEXT_SYS_IDLE=$(echo $NEXT_CPU_INFO | awk '{print $4}')
  14. NEXT_TOTAL_CPU_T=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')

  15. #系统空闲时间
  16. SYSTEM_IDLE=`echo ${NEXT_SYS_IDLE} ${LAST_SYS_IDLE} | awk '{print $1-$2}'`
  17. #CPU总时间
  18. TOTAL_TIME=`echo ${NEXT_TOTAL_CPU_T} ${LAST_TOTAL_CPU_T} | awk '{print $1-$2}'`
  19. load=`echo ${SYSTEM_IDLE} ${TOTAL_TIME} | awk '{printf "%.2f", 100-$1/$2*100}'`
  20. else
  21. load=$(cat /proc/loadavg | colrm 60)
  22. check=$(cat /proc/cpuinfo | grep "processor" | wc -l)
  23. fi
  24. if [[ $load >$check ]]
  25. #加上重启NGINX的命令
  26. echo -e "\n$mode当前负载大于$check 重启Nginx"
  27. elif [[ $load <$check ]]
  28. then
  29. echo -e "\n$mode当前负载低于$check不做任何操作"
  30. fi   
复制代码

作者: shuishui    时间: 2022-3-9 12:49
mingxingye 发表于 2022-3-9 12:42

有没有简化版的,可以用宝塔计划任务的
作者: mingxingye    时间: 2022-3-9 12:51
shuishui 发表于 2022-3-9 12:49
有没有简化版的,可以用宝塔计划任务的

后面加上重启NG的命令接入一下就可以了啊
作者: u104b230    时间: 2022-3-9 12:53
笑花落半世琉璃 发表于 2022-3-9 12:32
我用的哪吒有现成的

怎麼達到? 不是只有警報,沒看到有這功能
作者: shuishui    时间: 2022-3-9 12:54
check=99是啥意思
作者: mingxingye    时间: 2022-3-9 12:58
shuishui 发表于 2022-3-9 12:54
check=99是啥意思

你只需要添加上重启Nginx的命令就可以了 但是我没测试过 不过看了下没啥毛病
作者: heyxiu    时间: 2022-3-9 12:58
mingxingye 发表于 2022-3-9 12:42

随手写出这么长的脚本,是个大佬
作者: Smilence    时间: 2022-3-9 13:02
哪吒的规则,一直没怎么弄明白~~
就放了个github上默认的规则
作者: 88232128    时间: 2022-3-9 13:34
NGINX:CPU负载高跟我有什么关系
作者: shuishui    时间: 2022-3-9 13:35
88232128 发表于 2022-3-9 13:34
NGINX:CPU负载高跟我有什么关系

NGINX占用CPU百分百到死机
作者: sdqu    时间: 2022-3-9 13:36
我猜应该是重启php-fpm之类的东西吧
nginx负载不太容易高的
作者: shuishui    时间: 2022-3-9 13:38
sdqu 发表于 2022-3-9 13:36
我猜应该是重启php-fpm之类的东西吧
nginx负载不太容易高的

我还就是NGINX
作者: 88232128    时间: 2022-3-9 14:10
shuishui 发表于 2022-3-9 13:35
NGINX占用CPU百分百到死机

那一定是插件导致的,NGINX自身负载能力很强,关掉不必要的功能看看。
作者: heihai    时间: 2022-3-17 11:14
高并发的时候ng的cpu占用会高,但经常超过八九十,建议扩容




欢迎光临 全球主机交流论坛 (https://loc.528866.xyz/) Powered by Discuz! X3.4