在CentOS系统中,WebLogic的JVM参数主要通过域目录下的setDomainEnv.sh脚本(位于$DOMAIN_HOME/bin目录)进行配置。该脚本是WebLogic启动时加载JVM参数的核心文件,所有JVM内存设置(如堆大小、新生代大小)、垃圾回收器选择等参数均在此文件中定义。
配置前需了解关键参数的含义及作用,以下是WebLogic优化中最常用的JVM参数:
堆内存设置:
-Xms<初始堆大小>:设置JVM启动时的初始堆内存(如-Xms512m表示初始堆为512MB)。-Xmx<最大堆大小>:设置JVM可使用的最大堆内存(如-Xmx1024m表示最大堆为1GB)。新生代设置:
-Xmn<新生代大小>:设置新生代内存大小(如-Xmn256m表示新生代为256MB)。永久代/元空间设置(Java 8及以上版本差异):
-XX:PermSize=<初始永久代大小>、-XX:MaxPermSize=<最大永久代大小>(如-XX:PermSize=128m、-XX:MaxPermSize=256m),用于存储类元数据。-XX:MetaspaceSize=<初始元空间大小>、-XX:MaxMetaspaceSize=<最大元空间大小>(如-XX:MetaspaceSize=128m、-XX:MaxMetaspaceSize=256m),元空间使用本地内存,默认无上限(需根据应用类数量调整)。垃圾回收器选择:
-XX:+UseG1GC:启用G1垃圾回收器(适用于大内存、低延迟场景,如堆内存>4GB)。-XX:+UseConcMarkSweepGC:启用CMS垃圾回收器(适用于低延迟应用,Java 14及以上已移除)。-XX:+UseParallelGC:启用并行垃圾回收器(适用于高吞吐量场景,如批处理应用)。垃圾回收日志:
-Xlog:gc*:启用详细GC日志(Java 9及以上)。-XX:+PrintGCDetails:打印GC详细信息。-XX:+PrintGCTimeStamps:打印GC时间戳。备份原始脚本:
修改前务必备份setDomainEnv.sh,避免配置错误导致无法启动:
cd $DOMAIN_HOME/bin
cp setDomainEnv.sh setDomainEnv.sh.bak
编辑setDomainEnv.sh文件:
使用文本编辑器(如vi或nano)打开文件,找到JVM参数设置部分(通常在文件中段,包含JAVA_OPTS或MEM_ARGS变量)。
MEM_ARGS变量,直接修改其值(推荐方式):export MEM_ARGS="-Xms1024m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
MEM_ARGS,则在JAVA_OPTS变量后追加参数(需注意变量拼接):export JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
说明:上述配置将初始堆设为1GB、最大堆设为2GB,元空间设为256MB~512MB,使用G1垃圾回收器。
保存并退出:
编辑完成后,保存文件并退出编辑器(vi中按:wq,nano中按Ctrl+O→Enter→Ctrl+X)。
重启WebLogic服务:
使配置生效,需重启WebLogic服务器:
cd $DOMAIN_HOME/bin
./stopWebLogic.sh # 停止服务器(若有密码需输入)
./startWebLogic.sh # 启动服务器
启动后,可通过以下方式验证JVM参数是否设置成功:
查看WebLogic启动日志:
日志文件位于$DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log,搜索-Xms、-Xmx等参数,确认是否包含配置的值。
使用JDK工具查看运行时参数:
执行以下命令,过滤出JVM堆内存参数:
jcmd $(pgrep -f "weblogic.Server") VM.flags | grep -E "HeapSize|Metaspace"
输出示例:
uintx InitialHeapSize := 1073741824 {product} # 1GB
uintx MaxHeapSize := 2147483648 {product} # 2GB
uintx MetaspaceSize := 268435456 {pd product} # 256MB
jstat、VisualVM等工具监控GC频率、堆内存使用率,根据实际情况调整参数(如堆内存不足则增大-Xmx,GC停顿过长则更换垃圾回收器)。setDomainEnv.sh有写权限(可使用chmod +w setDomainEnv.sh添加权限)。通过以上步骤,即可在CentOS系统中完成WebLogic的JVM参数配置,优化服务器性能。