Files
geg-gas-pcitc/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/startApp.sh

50 lines
2.6 KiB
Bash
Raw Normal View History

2025-10-10 09:20:48 +08:00
#!/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