当前位置: 首页 > news >正文

邢台 建网站中国机械设备制造网

邢台 建网站,中国机械设备制造网,网站设计用什么软件做的,关于网站建设的投标书这两天我们有个服务出现了很严重的内存泄漏问题,本来按说既然是内存泄漏问题那我们就找到内存泄漏原因然后解决掉就行了,但是因为那个服务不是我写的,然后现在又很忙抽不出那么多时间,所以就先用临时的方法补救一下,写…

这两天我们有个服务出现了很严重的内存泄漏问题,本来按说既然是内存泄漏问题那我们就找到内存泄漏原因然后解决掉就行了,但是因为那个服务不是我写的,然后现在又很忙抽不出那么多时间,所以就先用临时的方法补救一下,写个监测脚本发现不对就自动重启

脚本内容如下(脚本名称:monitor.sh)
注意我这里是根据 CPU 使用率判断的,因为这个服务即使内存泄漏很严重但是服务本身没有挂掉还在运行,只是请求进不去了
下面脚本加了一些内容,因为我发现有的服务器上环境变量不对启动不了 jar 包,还有就是有的程序启动的时候会有一段时间 CPU 占比非常大,所以又加了一个冷却时间,防止一直重启

#!/bin/bashAPP_HOME="/data/application/app"
JAR_NAME="app-1.0.jar"
LOG_FILE="$APP_HOME/monitor.log"
RESTART_RECORD="$APP_HOME/.last_restart_time"# 设置 Java 环境
export JAVA_HOME=/data/midsoftware/ali_jdk_8.16.17
export PATH=$JAVA_HOME/bin:$PATH# 进入应用目录
cd $APP_HOME || { echo "Failed to cd $APP_HOME"; exit 1; }PID=$(ps aux | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')CURRENT_TIME=$(date +%s)
COOLDOWN=150   # 150秒冷却时间LAST_RESTART=0
if [ -f "$RESTART_RECORD" ]; thenLAST_RESTART=$(cat "$RESTART_RECORD")
fiif [ -z "$PID" ]; then# 服务未运行,启动sh startup.shecho "$(date '+%F %T') Service not running, starting..." >> $LOG_FILEdate +%s > "$RESTART_RECORD"   # 记录启动时间
else# 检查 CPU# CPU=$(ps -p $PID -o %cpu= | awk '{print int($1)}')CPU=$(top -b -n1 -p $PID | tail -n +8 | awk '{print int($9)}')echo "$(date '+%F %T') PID=$PID CPU=${CPU}%" >> $LOG_FILECPU_THRESHOLD=80TIME_DIFF=$(( CURRENT_TIME - LAST_RESTART ))if [ "$CPU" -gt "$CPU_THRESHOLD" ]; thenif [ "$TIME_DIFF" -lt "$COOLDOWN" ]; thenecho "$(date '+%F %T') CPU exceed $CPU_THRESHOLD%, but within cooldown period, skipping restart." >> $LOG_FILEelseecho "$(date '+%F %T') CPU exceed $CPU_THRESHOLD%, restarting service..." >> $LOG_FILEsh shutdown.shsleep 5sh startup.shecho "$(date '+%F %T') Restarted service" >> $LOG_FILEdate +%s > "$RESTART_RECORD"   # 更新重启时间fifi
fi

然后我们把它加到定时任务里面去

crontab -e

在里面加入一行(注意自己的脚本路径和名称)

* * * * * /data/application/app/monitor.sh >> /data/application/app/monitor.log 2>&1

上面的是每分钟执行一次,服务器上的定时任务最小的粒度就是一分钟了,如果想更细的粒度比如每十秒检查一次可以写成下面这样的

* * * * * /data/application/app/monitor.sh >> /data/application/app/monitor.log 2>&1
* * * * * sleep 10; /data/application/app/monitor.sh >> /data/application/app/monitor.log 2>&1
* * * * * sleep 20; /data/application/app/monitor.sh >> /data/application/app/monitor.log 2>&1
* * * * * sleep 30; /data/application/app/monitor.sh >> /data/application/app/monitor.log 2>&1
* * * * * sleep 40; /data/application/app/monitor.sh >> /data/application/app/monitor.log 2>&1
* * * * * sleep 50; /data/application/app/monitor.sh >> /data/application/app/monitor.log 2>&1

检查一下看是否添加成功,如果下面命令里面能看到你家的那条记录就说明成功了

crontab -l

等一两分钟我们再去看下日志(注意自己的路径)

tail -f /data/application/app/monitor.log

能看到下面这样的

root@ecs-v2:/data/application/app# tail -f /data/application/app/monitor.log
2025-08-22 09:36:01 PID=1736316 CPU=22%
2025-08-22 09:37:01 PID=1736316 CPU=22%
2025-08-22 09:38:01 PID=1736316 CPU=22%
2025-08-22 09:39:01 PID=1736316 CPU=22%
2025-08-22 09:40:01 PID=1736316 CPU=22%

还有那种服务直接挂了重启的脚本,其它的和上面一样,加入到定时任务里面就可以了

#!/bin/bash
APP_HOME=/data/application/app
JAR_NAME=app-1.0.jar
START_SCRIPT=$APP_HOME/startup.sh# 找到进程 PID
PID=$(ps aux | grep $JAR_NAME | grep -v grep | awk '{print $2}')cd $APP_HOMEif [ -z "$PID" ]; thensh $START_SCRIPTecho "服务已挂掉,已自动重启,时间:`date '+%Y-%m-%d %T'`" >> $APP_HOME/restart_record.log
fi
http://www.dtcms.com/a/507308.html

相关文章:

  • app网站开发河 又最新新闻热点事件300字
  • ZooKeeper集群:分布式系统的核心守护者
  • 网鼎杯 2020 朱雀组
  • 开发避坑指南(63):解决SQL排序子句列名歧义异常:Column ‘xxx‘ is ambiguous
  • 【C + +】红黑树:全面剖析与深度学习
  • 数据结构(顺序表和链表)
  • C# 基础——装箱和拆箱
  • 分享网站友情链接营销
  • windows中用wsl使用cuda
  • 运维逆袭志·第3期 | 数据孤岛破局之战 :跨业务分析的难题攻坚
  • 《道德经》第二十一章
  • 第 14 章:Spring AI Alibaba — Nacos3实现动态Prompt
  • TableTime:将时序分类重构为表格理解任务,更有效对齐LLM语义空间
  • Java的main方法语法
  • 【Linux】 层层递进,抽丝剥茧:调度队列、命令行参数、环境变量
  • 火电厂VR安全培训系统怎么样?VR安全培训告别传统培训痛点!
  • 网站建设有哪些工作儿童教育网站源码
  • 开题报告之基于SpringBoot框架的路面故障信息上报系统设计与实现
  • rabbitmq服务端消费端实例(direct和fanout模式)
  • 橙色车队上的安全密码:嘉顺达蓝海的危险品运输专业之道
  • FPGA高频面试问题整理—附答案
  • html框架做网站创立个网站专业卖手机
  • 【设计模式】单例模式(Singleton)
  • 2025.10.18 TRAE HACKATHON WUHAN 黑客马拉松在武汉隆重举行[特殊字符]
  • php5 mysql网站开发实例精讲东莞保安公司联系电话
  • 怎么加入网站做微商城深圳广告设计与制作公司
  • App 上架 iOS 全流程指南,开发签名、IPA 上传与使用 开心上架 跨平台自动化上架实践
  • Learning Depth Estimation for Transparent and Mirror Surfaces
  • 基于知识图谱的智能会议纪要系统:从语音识别到深度理解
  • 网络通信中的POE PD详解:从核心概念到芯片选型指南