美文网首页
jvm进程监控,支持自动重启服务

jvm进程监控,支持自动重启服务

作者: 天草二十六_简村人 | 来源:发表于2022-08-09 10:35 被阅读0次

一、背景

jvm进程经常会自己挂掉,原因有很多,比如断电,被误杀等。所以我们需要有一套脚本,定期检测jvm端口是否存在,如果不存在,则需要自动重启。

二、依赖的组件

1、crontab -e

# 每分钟监听jvm进程
*/1 * * * * /bin/sh /opt/monitor.sh

2、monitor.sh

#! /bin/sh

source /etc/profile

cd /server/cwp-to-video/

# 进程1
procnum=`ps -ef|grep cwp2video|grep -v grep|wc -l`
if [ $procnum -eq 0 ]
then
    echo `date +%Y-%m-%d` `date +%H:%M:%S` "restart service cwp2video" >>/opt/restart-cwp2video.log
    sh ./cwp2video-evolution/bin/startup.sh restart
fi

# 进程2
adbProcnum=`ps -ef|grep adb-screen|grep -v grep|wc -l`
if [ $adbProcnum -eq 0 ]
then
    echo `date +%Y-%m-%d` `date +%H:%M:%S` "restart service adb-screen" >>/opt/restart-adb-screen.log
    sh ./adb-screen-service/bin/startup.sh restart
fi

3、startup.sh

各自实现不同,这里仅列出我们的实现,以作参考

  • 启动的时候,保存好进程号,在停止或重启的时候,只需要读取文件里的进程号,然后kill {pid}
source /etc/profile

service=adb-screen-service
basepath=/server/cwp-to-video/${service}

start() {
  nohup java -Dfile.encoding="UTF-8" -Duser.timezone=Asia/Shanghai -Dserver.ip=192.168.53.29  -Dspring.config.location=${basepath}/bin/application.yml -Xms64m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${basepath}/dump/ -jar ${basepath}/packages/${service}.jar >> ${basepath}/logs/${service}.log 2>&1 &
  echo $! > ${basepath}/pid
}

stop() {
    kill -9 `cat $basepath/pid`
    rm -rf $basepath/pid
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    sleep 1
    start
    ;;
  health)
    $basepath/bin/health.sh
    ;;
  *)
    echo "Usage: run.sh {start|stop|restart}"
    ;;
esac

exit 0

三、补充部分

image.png
[root@localhost opt]# jps
16496 adb-screen-service.jar
20168 Jps
2506 cwp2video-evolution.jar

3.1、查找jvm进程ID

echo `ps -ef|grep 'adb-screen-service'|grep -v grep|awk '{print $2}'`

3.2、杀掉jvm进程

kill -9 `ps -ef|grep 'adb-screen-service'|grep -v grep|awk '{print $2}'`

3.3、把进程ID存入到文件里

echo $! > ${basepath}/pid

kill -9 `cat $basepath/pid`

四、验证

杀掉进程,等待一分钟左右,可以看到会有自动重启jvm服务的日志输出。

image.png
> cat restart-adb-screen.log 
2022-08-09 10:18:02 restart service adb-screen 

相关文章

  • jvm进程监控,支持自动重启服务

    一、背景 jvm进程经常会自己挂掉,原因有很多,比如断电,被误杀等。所以我们需要有一套脚本,定期检测jvm端口是否...

  • systemd

    我要解决什么问题 启动重启后如何让分区自动挂载如何让服务进程自动启动 服务进程意外终止如何自动重启 什么工具能解决...

  • Supervisor监听程序并重启

    supervisor安装 supervisor可以监控tomcat进程,当tomcat关闭后实现自动重启 如果需要...

  • Docker容器自动重启

    实现在服务器重启后自动启动docker服务以及容器(类似于守护进程服务)。 重启启动docker服务 重启启动do...

  • pm2

    pm2是node服务端进程管理器,用于简化应用管理任务,性能监控,自动重启,负载均衡,相对使用起来极其简单 一个命...

  • 关于supervisor

    supervisor是一个用于监控和自动重启的管理进程的工具,可以用在自动运维 auto healing 中htt...

  • Linux下以守护进程的方式执行PHP脚本

    假设该php文件的路径为/root/run.php 打开终端 编辑进程监控脚本 当进程不存在时,自动重启 /roo...

  • 使用monit监控服务进程和硬盘以及自动重启进程

    需求 需要服务器运行的程序在被意外杀死时,能自动重启,同时提醒我程序发生过重启。在服务器硬盘使用量达到一定比例的时...

  • 空文件引起ES结点重启失败处理

    问题背景 ES集群的各结点有加进程监控,如果进程不在,监控会自动重新拉起,一般情况下重启不会有问题。今天遇到一个结...

  • prometheus根据文件做服务IP动态刷新

    Prometheus支持很多IP自动发现方式,根据IP刷新可以很好地刷新普罗监控的监控IP,并且不需要重启普罗,其...

网友评论

      本文标题:jvm进程监控,支持自动重启服务

      本文链接:https://www.haomeiwen.com/subject/iefnwrtx.html