- 首页 >
- 问答 >
-
智能运维 >
- 如何在Ubuntu上优化WebLogic的JVM参数
如何在Ubuntu上优化WebLogic的JVM参数
小樊
31
2025-12-06 19:29:53
Ubuntu上优化WebLogic的JVM参数
一 基线原则与容量规划
- 堆大小:生产环境将**-Xms与-Xmx设为相同**,避免运行期扩缩堆带来的抖动;堆占用建议不超过物理内存的70%,为操作系统和其他进程预留资源。年轻代建议占堆的1/3~1/2,例如使用**-Xmn设置;Survivor与Eden比值可用-XX:SurvivorRatio=8**。元空间(Java 8+)建议设置上限,如**-XX:MetaspaceSize=… -XX:MaxMetaspaceSize=…,防止无界增长。64位JVM默认启用-XX:+UseCompressedOops**;生产启用**-server**模式。示例基线(仅示意):-Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m。以上做法有助于稳定GC行为并降低停顿。
二 垃圾回收器选择与关键参数
- 吞吐量优先(Java 8常用):并行GC
- 示例:-XX:+UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=4
- 低延迟优先(Web应用常用):G1 GC
- 示例:-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1ReservePercent=15 -XX:InitiatingHeapOccupancyPercent=35
- 超大堆与极低停顿(Java 11+):ZGC 或 Shenandoah
- 示例:-XX:+UseZGC 或 -XX:+UseShenandoahGC
- 通用诊断与稳健性
- OOM时堆转储:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dumps
- GC日志:-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:/path/to/gc_%t.log
- 避免显式GC:-XX:+DisableExplicitGC
- 选择要点:面向Web交互建议优先G1(平衡吞吐与停顿);若堆很大且追求极低停顿,在Java 11+评估ZGC/Shenandoah;纯吞吐场景可用并行GC。
三 在Ubuntu上的配置方法与生效验证
- 方式一(推荐):在域目录的启动脚本中设置
- 编辑:$DOMAIN_HOME/bin/setDomainEnv.sh
- 在文件末尾加入(示例为G1):
- USER_MEM_ARGS=“-Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m”
- export USER_MEM_ARGS
- 如需GC日志与OOM堆转储,可追加:
- USER_MEM_ARGS=“$USER_MEM_ARGS -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/weblogic/heapdumps -Xloggc:/opt/weblogic/logs/gc_%t.log”
- 方式二:管理控制台
- 登录控制台 → 环境 → 服务器 → 目标服务器 → 配置 → 服务器启动 → 参数,添加JVM参数(适合统一管理多实例)。
- 使配置生效与验证
- 重启WebLogic;使用ps -ef | grep java或jcmd VM.flags查看实际生效参数;检查GC日志与heapdump是否生成。
四 Ubuntu系统层面的优化
- 文件描述符限制
- 建议将软/硬限制提升至至少8192(或更高,视并发连接而定):编辑**/etc/security/limits.conf**
- 重新登录目标用户后用ulimit -n确认;WebLogic大量连接时更高的nofile能避免“too many open files”。
- 随机数源导致的启动慢(WebLogic 10.x在Linux上偶发)
- 编辑:$JAVA_HOME/jre/lib/security/java.security
- 将securerandom.source=file:/dev/urandom改为:securerandom.source=file:/dev/./urandom(注意路径中的“./”),可显著缩短启动时间。
五 调优步骤与配套建议
- 迭代调优流程
- 建立基线(默认或现有配置的性能数据)→ 仅调整1–2个JVM参数 → 进行压力测试(如JMeter/压测脚本)→ 观察关键指标 → 复测与固化;循环直至满足SLA(吞吐、P95/P99延迟、Full GC次数与停顿)。
- 关键监控指标
- 堆内存使用率建议长期低于70%;Young GC应快速且频繁、Full GC应极少;元空间使用不应持续增长;关注GC日志中的停顿时间与并发标记耗时。
- 与JVM无关的配套调优(同样影响整体性能)
- 合理设置JDBC连接池、EJB/线程池等容器资源;启用PreparedStatement Cache;在合适场景使用LLR事务优化替代XA;优化HTTP Session策略与消息应用配额/分页。上述调优与JVM参数配合,能更充分释放性能。