|
|
|
|
|
@echo off
|
|
|
|
|
|
SETLOCAL
|
|
|
|
|
|
|
|
|
|
|
|
:: 设置命令行字符集为 UTF-8
|
|
|
|
|
|
chcp 65001
|
|
|
|
|
|
|
|
|
|
|
|
:: ========================================
|
|
|
|
|
|
REM 配置项
|
|
|
|
|
|
REM ========================================
|
|
|
|
|
|
|
|
|
|
|
|
:: Java 路径
|
|
|
|
|
|
set "JAVA_PATH=D:\sy_software\jdk-20\bin\java.exe"
|
|
|
|
|
|
|
|
|
|
|
|
:: JAR 包路径
|
|
|
|
|
|
set "JAR_PATH=D:\sy_software\application-app\yudao-server.jar"
|
|
|
|
|
|
|
|
|
|
|
|
:: 服务名
|
|
|
|
|
|
set "SERVICE_NAME=yudao-server"
|
|
|
|
|
|
|
|
|
|
|
|
:: 日志路径
|
|
|
|
|
|
set "LOG_PATH=D:\sy_software\application-app\logs"
|
|
|
|
|
|
|
|
|
|
|
|
:: NSSM 安装路径
|
|
|
|
|
|
set "NSSM_PATH=D:\sy_software\nssm\win64\nssm.exe"
|
|
|
|
|
|
|
|
|
|
|
|
:: ========================================
|
|
|
|
|
|
REM 优化的 JVM 参数
|
|
|
|
|
|
REM ========================================
|
|
|
|
|
|
|
|
|
|
|
|
set "JVM_OPTS=-server -Xms1g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:ReservedCodeCacheSize=512m -XX:MaxDirectMemorySize=1g -XX:HeapBaseMinAddress=0x100000000 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%LOG_PATH%/heap_dump.hprof -XX:ErrorFile=%LOG_PATH%/hs_err_pid%%p.log -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai"
|
|
|
|
|
|
|
|
|
|
|
|
:: ========================================
|
|
|
|
|
|
REM 创建日志目录
|
|
|
|
|
|
REM ========================================
|
|
|
|
|
|
|
|
|
|
|
|
if not exist "%LOG_PATH%" (
|
|
|
|
|
|
echo 创建日志目录: %LOG_PATH%
|
|
|
|
|
|
mkdir "%LOG_PATH%"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
:: ========================================
|
|
|
|
|
|
REM 使用 NSSM 安装/更新服务
|
|
|
|
|
|
REM ========================================
|
|
|
|
|
|
|
|
|
|
|
|
echo ========================================
|
|
|
|
|
|
echo 正在使用 NSSM 创建/更新 Spring Boot 服务...
|
|
|
|
|
|
echo ========================================
|
|
|
|
|
|
|
|
|
|
|
|
:: 停止旧服务
|
|
|
|
|
|
echo 停止旧服务...
|
|
|
|
|
|
%NSSM_PATH% stop %SERVICE_NAME%
|
|
|
|
|
|
|
|
|
|
|
|
:: 删除旧服务
|
|
|
|
|
|
echo 删除旧服务...
|
|
|
|
|
|
%NSSM_PATH% remove %SERVICE_NAME% confirm
|
|
|
|
|
|
|
|
|
|
|
|
:: 创建新服务
|
|
|
|
|
|
echo 创建新服务...
|
|
|
|
|
|
%NSSM_PATH% install %SERVICE_NAME% "%JAVA_PATH%"
|
|
|
|
|
|
|
|
|
|
|
|
:: 配置服务应用目录
|
|
|
|
|
|
echo 配置服务应用目录...
|
|
|
|
|
|
%NSSM_PATH% set %SERVICE_NAME% AppDirectory "%~dp0"
|
|
|
|
|
|
|
|
|
|
|
|
:: 配置 JVM 参数和 JAR 路径
|
|
|
|
|
|
echo 配置 JVM 参数(关键:HeapBaseMinAddress=0x100000000)...
|
|
|
|
|
|
%NSSM_PATH% set %SERVICE_NAME% AppParameters %JVM_OPTS% -jar "%JAR_PATH%"
|
|
|
|
|
|
|
|
|
|
|
|
:: 配置服务启动类型(延迟自动启动)
|
|
|
|
|
|
echo 设置服务为开机延迟自启动...
|
|
|
|
|
|
%NSSM_PATH% set %SERVICE_NAME% Start SERVICE_DELAYED_AUTO_START
|
|
|
|
|
|
|
|
|
|
|
|
:: 配置服务重启策略(崩溃后自动重启)
|
|
|
|
|
|
echo 配置服务崩溃后自动重启...
|
|
|
|
|
|
%NSSM_PATH% set %SERVICE_NAME% AppExit Default Restart
|
|
|
|
|
|
%NSSM_PATH% set %SERVICE_NAME% AppRestartDelay 5000
|
|
|
|
|
|
|
|
|
|
|
|
:: 配置服务日志输出
|
|
|
|
|
|
echo 配置服务日志...
|
|
|
|
|
|
%NSSM_PATH% set %SERVICE_NAME% stdout "%LOG_PATH%\service-stdout.log"
|
|
|
|
|
|
%NSSM_PATH% set %SERVICE_NAME% stderr "%LOG_PATH%\service-stderr.log"
|
|
|
|
|
|
|
|
|
|
|
|
:: 启动服务
|
|
|
|
|
|
echo 启动服务...
|
|
|
|
|
|
%NSSM_PATH% start %SERVICE_NAME%
|
|
|
|
|
|
|
|
|
|
|
|
echo.
|
|
|
|
|
|
echo ========================================
|
|
|
|
|
|
echo 完成:服务已注册并启动
|
|
|
|
|
|
echo ========================================
|
|
|
|
|
|
echo 服务名称: %SERVICE_NAME%
|
|
|
|
|
|
echo JVM 参数已优化以解决本地内存不足问题
|
|
|
|
|
|
echo -Xms1g -Xmx2g
|
|
|
|
|
|
echo -XX:HeapBaseMinAddress=0x100000000 (关键修复)
|
|
|
|
|
|
echo -XX:ReservedCodeCacheSize=512m
|
|
|
|
|
|
echo -XX:+UseG1GC
|
|
|
|
|
|
echo.
|
|
|
|
|
|
echo 日志路径:
|
|
|
|
|
|
echo 服务日志: %LOG_PATH%\service-stdout.log
|
|
|
|
|
|
echo 错误日志: %LOG_PATH%\service-stderr.log
|
|
|
|
|
|
echo JVM 崩溃日志: %LOG_PATH%\hs_err_pid*.log
|
|
|
|
|
|
echo ========================================
|
|
|
|
|
|
ENDLOCAL
|
|
|
|
|
|
pause
|