针对tomcat的单节点高可用

问题与背景

tomcat异常宕机的情况,相信大家都遇到过。原因很多,比如:服务器资源不够,win自动杀死进程;比如出现内存泄漏,tomcat崩溃;比如程序出现啥问题,宕机带崩tomcat等等。但是,发生这种情况下,第一个反应就是,程序要无人值守自启动,这里给出windows系统和linux系统的tomcat监控重启解决方案。

解决方案

windows

tomcat通过bat脚本实现,可以注册成windows任务,也可以直接启动脚本 进行监控。

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

rem 链接
set URL="http://localhost/**"
rem tomcat目录
set TOMCAT_HOME="C:\Users\Administrator\Desktop\apache-tomcat8"
rem 关闭tomcat命令的路径
set CLOSE_CMD=%TOMCAT_HOME%\bin\shutdown.bat
rem 启动tomcat命令的路径
set START_CMD=%TOMCAT_HOME%\bin\startup.bat
rem tomcat缓存目录
set TOMCAT_CACHE=%TOMCAT_HOME%\HuanCun
rem 日志文件的路径
set LOG_PATH=%TOMCAT_HOME%\check.log
rem 每次检测完后等待时间,再进行下一次检测,秒,若将程序部署到系统计划任务,可忽略
set TIME_WAIT=5

:loop
set httpcode=0
cd /d %TOMCAT_HOME%
echo %date% %time%
echo 'begin checking tomcat'

echo %date% %time% >>%LOG_PATH%
for /l %%i in (1,1,10) do (
    echo %%i
    for /f "delims=" %%r in ('curl -sL -w "%%{http_code}" %URL% -o /dev/null') do (
        set httpcode=%%r
        if !httpcode!==200 (
            GOTO :OUTFOR
        )
    )
)

:OUTFOR
echo %httpcode% >>%LOG_PATH%

if not %httpcode%==200 (
     echo close tomcat >>%LOG_PATH%
     call %CLOSE_CMD%
     timeout -t 5 >nul
     echo success to close tomcat >>%LOG_PATH%

     rd /S /Q %TOMCAT_CACHE%
     echo start tomcat >>%LOG_PATH%
     call %START_CMD%
    
    echo success to start tomcat
    echo success to start tomcat >>%LOG_PATH%
) else (
    echo the tomcat run is ok
    echo the tomcat run is ok >>%LOG_PATH%
)
timeout -t 3 >nul
rem 若将脚本程序部署到系统计划程序中,将以下代码可注释
timeout -t %TIME_WAIT% >nul
goto loop

linux

vi monitor.sh

STATUS_OK=“200”
status="$(curl --write-out %{http_code} -Is --connect-timeout 10 --output /dev/null ‘http://locolhost/test’)"
if [ $STATUS_OK != $status ]
then service tomcat restart
else echo ‘ddy sdk server is ok.’

定时任务:crontab -e
0 0/1 * * * * /opt/monitor.sh

每1分钟检测一次tomcat的状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值