在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参数配置,优化服务器性能。