把项目发布到了服务器中,服务器用的是阿里云的(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://curl.se/windows/dl-7.81.0_1/
安装步骤:
1、解压下载好的文件,拷贝 curl.exe文件到C:\Windows\System32
2、再次运行脚本。
3、至此tomcat宕机后自动启动完成。