You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yudao/yudao-server/install-service.bat

105 lines
3.2 KiB
Batchfile

@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