对系统应用的监控思路以及重启方案

对系统应用的监控思路以及重启方案

目录

前言

由于项目运行老旧,存在诸多历史原因,我们使用的某个系统服务器经常出现CPU使用率过高,线程堆积等情况,又因为该服务器的源码不受我们维护,我们只是使用,所以需要频繁的人为维护,非常麻烦,于是就有了以下的解决方案。

通过CPU监控应用状态,并且定时重启脚本

由于此前多次监控系统崩溃时的情况,发现系统濒临崩溃时CPU占用率会持续保持较高标准,于是决定监控CPU的占用率,并且基于此情况重启

#!/bin/bash

# 设置要监视的进程名
process_name="java"

# 设置CPU使用率阈值
cpu_threshold=60

# 设置重启计数器阈值
restart_threshold=10

# 初始化重启计数器
restart_counter=0

while true
do
  # 获取要监视的进程的进程ID
  pid=$(ps -ef | grep "$process_name" | grep -v grep | awk '{print $2}')

  # 获取进程的当前CPU使用情况
  cpu=$(top -b -n 1 -p "$pid" | awk 'NR>7 { sum += $9; } END { print sum; }')

  # 检查CPU使用率是否超过阈值
  if (( $(echo "$cpu > $cpu_threshold" | bc -l) )); then
    restart_counter=$((restart_counter+1))
    echo "$process_name 的CPU使用率超过了$cpu_threshold%。已进行第$restart_counter次重启计数。当前CPU使用了为:$cpu "
    if [ $restart_counter -ge $restart_threshold ]; then
      echo "线程Id:$pid 连续$restart_threshold次检测到CPU使用率超过$cpu_threshold%。当前CPU使用了为:$cpu 正在重启..."
      ##要是不担心数据丢失,可以使用该方案
      kill -9 "$pid"
      sleep 5
      # 这里可以用你启动Java进程的命令替换以下命令
      sh startup.sh &
      ##较为柔和一点的方式则重启tomcat服务器,这样可以让服务器运行完正在运行的进程
      sudo service tomcat restart
      restart_counter=0
    fi
  else
    echo "线程Id:$pid  $process_name 的CPU使用率低于$cpu_threshold%。重启计数器已重置。当前CPU使用为: $cpu"
    restart_counter=0
  fi

  # 等待1分钟后再次检查
  sleep 60
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值