50 lines
2.6 KiB
Bash
50 lines
2.6 KiB
Bash
#!/bin/sh
|
||
#cp /etc/hosts /etc/hosts.temp
|
||
|
||
# 初始化环境变量(设置默认值,避免空变量)
|
||
APP_NAME=${APP_NAME:-"default-springboot-app"} # 默认服务名
|
||
SKYWALKING_SERVER=${SKYWALKING_SERVER:-"localhost:11800"} # 默认SkyWalking服务地址
|
||
ENV_APP_PRO_FILE=${ENV_APP_PRO_FILE:-"test"} # 默认环境为test
|
||
|
||
# 初始化Java启动参数(包含是否使用-server模式)
|
||
java_base="java -javaagent:/opt/agent/skywalking-agent.jar -Dskywalking.agent.service_name=$APP_NAME"
|
||
export java_base="$java_base -Dskywalking.collector.backend_service=$SKYWALKING_SERVER"
|
||
|
||
java_start="$java_base -jar"
|
||
|
||
# 根据环境变量区分开发/生产环境配置
|
||
if [ "$ENV_APP_PRO_FILE" = "prod" ]; then
|
||
# 生产环境JVM参数
|
||
export JAVA_OPTS="-Xms1024m -Xmx4096m -Xmn512m -Xss512k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
|
||
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:G1HeapRegionSize=32m -XX:G1ReservePercent=20"
|
||
export JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=500 -XX:G1MixedGCCountTarget=10"
|
||
|
||
export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xloggc:/var/log/app/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps"
|
||
export JAVA_OPTS="$JAVA_OPTS -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
|
||
|
||
# 生产环境使用-server模式
|
||
java_start="$java_base -jar -server"
|
||
else
|
||
# 开发环境JVM参数
|
||
export JAVA_OPTS="-Xms512m -Xmx1024m -Xmn256m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
|
||
export JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseParNewGC"
|
||
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:CMSMaxAbortablePrecleanTime=5000"
|
||
export JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly"
|
||
export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xloggc:./logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps"
|
||
# 开发环境开启远程调试
|
||
export JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
|
||
fi
|
||
|
||
# 公共配置(编码、时区等)
|
||
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8"
|
||
export JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
|
||
export JAVA_OPTS="$JAVA_OPTS -Duser.language=zh -Duser.country=CN -Duser.timezone=Asia/Shanghai"
|
||
|
||
# SpringBoot 环境配置
|
||
export JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=$ENV_APP_PRO_FILE"
|
||
|
||
# 输出启动参数
|
||
echo "启动参数:$java_start $JAVA_OPTS $ENV_APP_FILE_PATH"
|
||
|
||
# 执行启动命令(用双引号包裹每个变量)
|
||
exec $java_start $JAVA_OPTS $ENV_APP_FILE_PATH |