温馨提示×

weblogic在ubuntu上的内存设置

小樊
35
2025-11-23 01:30:46
栏目: 智能运维

Ubuntu上 WebLogic 内存设置指南

一 配置方式与优先级

  • 方式一 修改域启动脚本 setDomainEnv.sh(推荐)
    • 路径通常为:MW_HOME/user_projects/domains/<你的域>/bin/setDomainEnv.sh
    • 在该文件中为 WLS_MEM_ARGS_64BIT / WLS_MEM_ARGS_32BITUSER_MEM_ARGS 设置堆与非堆参数,例如:
      • WLS_MEM_ARGS_64BIT=“-Xms4g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m”
    • 说明:脚本中通常已存在条件分支(按 JAVA_USE_64BIT 或位数判断),优先使用带位数的变量,避免被通用变量覆盖。修改后重启受影响的 AdminServer / Managed Server
  • 方式二 修改全局 commEnv.sh(影响范围大,谨慎)
    • 路径通常为:WL_HOME/common/bin/commEnv.sh
    • 可在相应 JDK 分支(如 Sun/Oracle、JRockit)下调整 MEM_ARGS 的默认值;但域级脚本中的设置通常会覆盖此处,适合做“全局兜底”。
  • 方式三 通过管理控制台设置
    • 登录控制台:环境 → 服务器 → 目标服务器 → 配置 → 服务器启动,在“参数”字段直接填写 JVM 参数(如 -Xms/-Xmx/-XX:MetaspaceSize 等),保存并重启服务器。适合无法修改文件系统或需集中运维的场景。

二 关键 JVM 参数与取值建议

  • 堆内存
    • 初始堆与最大堆建议设为相同,避免运行期扩容抖动:-Xms-Xmx(如 -Xms4g -Xmx4g)。
    • 堆占主机物理内存的比例建议不超过70%,为操作系统、Direct Memory、容器/虚拟化开销等预留空间。
  • 年轻代(可选)
    • 使用 -Xmn 设置年轻代大小,常见为堆的1/3~1/2(如 -Xmn2g),可配合 -XX:SurvivorRatio=8 调整 Eden/Survivor 比例。
  • 非堆内存
    • Java 8 及以下:使用 -XX:PermSize / -XX:MaxPermSize(如 -XX:MaxPermSize=256m)。
    • Java 8 及以上:使用 -XX:MetaspaceSize / -XX:MaxMetaspaceSize(如 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m),建议设置上限防止元空间泄漏。
  • 直接内存
    • 如应用大量使用 NIO/DirectBuffer,可显式设置 -XX:MaxDirectMemorySize(如 -XX:MaxDirectMemorySize=2g)。
  • 垃圾回收器(按版本与延迟/吞吐目标选择)
    • 吞吐量优先(Java 8):-XX:+UseParallelGC -XX:+UseParallelOldGC
    • 低延迟优先(Java 8+):-XX:+UseG1GC -XX:MaxGCPauseMillis=200
    • 超低暂停(Java 11+):-XX:+UseZGC-XX:+UseShenandoahGC
    • 生产环境建议固定 GC 策略,避免频繁变更。

三 Ubuntu 系统层面的注意事项

  • 资源与监控
    • 使用 top/htop 观察 WebLogic 进程 RES/VIRT 与系统负载;必要时用 cgroups 限制资源,避免单实例过度占用。
    • 结合 vmstat/iostat/sar 做 I/O 与系统层面瓶颈排查。
  • OOM 与安全
    • 关注内核 OOM Killer,必要时调整进程 oom_score_adj,降低关键进程被误杀的风险。
    • 内存紧张时可启用 zram/zswap 提升可用内存弹性,但会增加 CPU 开销。

四 验证与常见问题处理

  • 验证配置是否生效
    • 控制台查看:环境 → 服务器 → 目标服务器 → 监视 → 性能 → JVM 堆,确认 Heap Size Current / Maximum 与设置一致。
    • 命令行检查:
      • 查看进程与参数:ps -ef | grep weblogicjinfo
      • 堆与 GC 概览:jstat -gc 1000
      • 堆详情:jmap -heap
      • 线程与锁:jstack
  • 常见异常与对策
    • java.lang.OutOfMemoryError: Java heap space
      • 适度提高 -Xmx,并检查是否存在内存泄漏或对象生命周期过长问题;开启 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=… 分析 Dump。
    • java.lang.OutOfMemoryError: Metaspace / PermGen
      • Java 8+ 增加 -XX:MaxMetaspaceSize;Java 7- 增加 -XX:MaxPermSize。若持续增长,排查类加载泄漏。
    • java.lang.OutOfMemoryError: Direct buffer memory
      • 增加 -XX:MaxDirectMemorySize 或优化 NIO/DirectBuffer 使用。
    • 32 位限制
      • 32 位 JVM 堆通常不超过约 1.5–2GB,建议优先使用 64 位 JDK 与 64 位操作系统。

0