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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

@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