明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
随笔 - 1277, 文章 - 0, 评论 - 214, 阅读 - 321万
  博客园  :: 首页  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

windows中tomcat无故宕机,如何自动重启tomcat

Posted on   且行且思  阅读(1028)  评论(0编辑  收藏  举报

把项目发布到了服务器中,服务器用的是阿里云的(Windows sql server2012),项目是用Spring Boot+Mybatis,tomcat没用spring boot自带的,最后是打成war包发不上去的。一开始项目运行没事,但是运行几天之后tomcat就会自动关闭。查看日志文件没有发任何异常信息。纠结了很久,没有找到方法,也怀疑是服务器配置太低,可能运行项目的时候cpu和内存达到一定限度的时候,windows会自动杀死比较大的进程。但是由于资金有限,没有去升级配置。所以就做了一个自动重启tomcat的脚本。

该脚本会自动检测tomcat启动成功后的一个地址,(就是你tomcat启动成功后能访问的一个地址,你可以写一个测试地址,或者直接访问 http://localhost:8080/)如果访问不到就会自动启动tomcat的start.bat文件。

我写的脚本:下载

复制代码
复制代码
@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
复制代码
复制代码

把脚本随便放,然后直接运行。如果运行的窗口中信息正常,并且能够实现上述功能,就不用看我下面说的了。

双击运行异常,报curl命令不是内部命令。这时你可以安装一下curl,很简单。我的是windows64位所以下载的是64位文件。

我下载好并且运行成功的curl文件:https://files.cnblogs.com/files/Fooo/curl-7.81.0_1-win64-mingw.zip

官网下载:下载      https://curl.se/windows/dl-7.81.0_1/

安装步骤:

1、解压下载好的文件,拷贝 curl.exe文件到C:\Windows\System32

2、再次运行脚本。

3、至此tomcat宕机后自动启动完成。

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
历史上的今天:
2020-03-05 Java List排序,分组等操作
2020-03-05 Java 遍历List或Map集合的4种方式
2010-03-05 GoogleMap : [Google Map]GMark事件运用(GEvent)
2007-03-05 怎么样通过代码实现类似IE浏览器地址栏ComboBox的效果。
点击右上角即可分享
微信分享提示