把項目發布到了服務器中,服務器用的是阿里雲的(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文件:下載
官網下載:下載
安裝步驟:
1、解壓下載好的文件,拷貝I386/curl.exe文件到C:\Windows\System32
2、再次運行腳本。
3、至此tomcat宕機后自動啟動完成。
※※※※ 安利一個資源網站:進入