1. 程式人生 > 其它 >windows中tomcat無故宕機,如何自動重啟tomcat

windows中tomcat無故宕機,如何自動重啟tomcat

把專案釋出到了伺服器中,伺服器用的是阿里雲的(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宕機後自動啟動完成。