在开始调优前,需确保Debian系统与WebLogic环境满足基本要求:
free -h命令查看系统可用内存,确保预留足够内存给操作系统(建议至少保留1-2GB);java -version验证版本;startWebLogic.sh、setDomainEnv.sh、config.xml),防止配置错误导致服务中断。堆内存是WebLogic应用运行的主要内存区域,需根据服务器物理内存和应用负载调整:
-Xms4g -Xmx8g),避免运行时堆内存动态扩展带来的性能损耗(扩展过程会导致应用暂停);-XX:NewRatio调整,如-XX:NewRatio=3表示年轻代:老年代=1:3);若应用存在大量长期存活对象(如缓存),可增大老年代比例。元空间用于存储类元数据(替代JDK 7及以下的永久代),需避免元空间溢出:
-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g),防止元空间频繁扩展;-XX:+PrintGCDetails日志观察元空间使用情况,若频繁触发Full GC,需增大MaxMetaspaceSize。根据应用负载选择合适的垃圾回收器,以平衡吞吐量与延迟:
-XX:+UseG1GC启用,可设置最大GC停顿时间(-XX:MaxGCPauseMillis=200,单位毫秒)和触发并发GC的堆占用率(-XX:InitiatingHeapOccupancyPercent=45,即堆占用45%时触发并发GC);-XX:+UseConcMarkSweepGC启用,但需注意CMS已停止更新,不建议新项目使用;-XX:+UseEscapeAnalysis启用,优化对象分配(将对象分配在栈上而非堆上),减少GC压力。WebLogic的主启动脚本(位于$DOMAIN_HOME/bin/目录下),通过设置JAVA_OPTIONS环境变量传递JVM参数:
# 备份原始脚本
cp startWebLogic.sh startWebLogic.sh.bak
# 编辑脚本(添加以下内容到文件末尾)
export JAVA_OPTIONS="${JAVA_OPTIONS} -Xms4g -Xmx8g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/weblogic/logs/gc.log"
保存后,通过./startWebLogic.sh启动WebLogic,验证参数是否生效(可通过ps -ef | grep java查看进程参数)。
部分场景下(如集群环境),需通过setDomainEnv.sh(位于$DOMAIN_HOME/bin/目录下)设置全局JVM参数:
# 编辑脚本(找到JAVA_OPTIONS变量,添加以下内容)
JAVA_OPTIONS="${JAVA_OPTIONS} -Xms4g -Xmx8g -XX:+UseG1GC"
保存后,重启WebLogic使配置生效。
对于内存密集型应用(如大数据处理),启用大页内存可减少TLB(Translation Lookaside Buffer)缺失,提升内存访问效率:
cat /proc/meminfo | grep Huge查看系统是否支持大页内存(需HugePages_Total大于0);sudo sysctl -w vm.nr_hugepages=1024设置大页数量(1024个,每个大页大小为2MB,总大小为2GB);JAVA_OPTIONS中添加-XX:+UseLargePages,启用大页内存支持。通过WebLogic管理控制台(http://<服务器IP>:7001/console)调整内存池大小:
域结构 > 环境 > 服务器 > <服务器名称> > 配置 > 调优 > 内存;jconsole(图形化)、jstat(命令行,如jstat -gcutil <pid> 1000每秒输出GC情况)监控内存使用;通过GC日志(-Xloggc:/weblogic/logs/gc.log)分析垃圾回收情况:
GCViewer(开源工具)可视化分析GC日志,快速定位问题。/weblogic/logs/目录下的旧日志)、监控内存使用趋势(如每月生成内存使用报告),及时发现潜在问题。