温馨提示×

如何在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 javajcmd VM.flags查看实际生效参数;检查GC日志heapdump是否生成。

四 Ubuntu系统层面的优化

  • 文件描述符限制
    • 建议将软/硬限制提升至至少8192(或更高,视并发连接而定):编辑**/etc/security/limits.conf**
        • soft nofile 8192
        • hard nofile 8192
    • 重新登录目标用户后用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参数配合,能更充分释放性能。

0