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文件下載

官網下載下載

安裝步驟:

1、解壓下載好的文件,拷貝I386/curl.exe文件到C:\Windows\System32

2、再次運行腳本。

3、至此tomcat宕機后自動啟動完成。

 

※※※※   安利一個資源網站:進入


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM