把项目发布到了服务器中,服务器用的是阿里云的(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宕机后自动启动完成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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的效果。