Ubuntu上WebLogic的内存配置建议
小樊
44
2025-11-15 02:09:24
Ubuntu上WebLogic内存配置建议
一 核心原则与容量规划
- 为JVM堆设置合理的上下限,通常将初始堆与最大堆设为相同,避免运行期频繁扩缩堆带来的抖动:-Xms == -Xmx。在 Linux/UNIX 上,建议 -Xmx 不超过物理内存的 75%;在 Windows 上建议不超过 50%,为操作系统和其他进程预留足够内存。堆外(元空间/本地内存)与堆合计不应超过机器可用物理内存,避免换页与OOM。对于多域/多实例共存的主机,按实例数拆分内存预算。建议开启 UseContainerSupport(容器/现代JDK默认),让JVM遵从容器内存限制。
二 配置位置与推荐做法
- 推荐的“官方入口”是修改域目录下的 setDomainEnv.sh(路径示例:/weblogic/user_projects/domains/<你的域名>/bin/setDomainEnv.sh)。在该文件中为不同 JAVA_VENDOR 与 64/32 位分别设置如 WLS_MEM_ARGS_64BIT / WLS_MEM_ARGS_32BIT,例如:
- 示例(仅示意,数值按上节原则调整):
- WLS_MEM_ARGS_64BIT=“-Xms4g -Xmx4g”
- export WLS_MEM_ARGS_64BIT
- 如需为某个实例单独定制,可在该实例的启动脚本(如 startWebLogic.sh 的副本)中导出 MEM_ARGS 覆盖全局值,或在 commEnv.sh 中按JDK厂商分支设置默认值(老版本常见做法)。修改后重启实例生效。
三 参数设置与版本差异要点
- 常用JVM内存参数与作用
- 堆:
- -Xms:初始堆大小,建议与 -Xmx 一致
- -Xmx:最大堆大小,遵循“不超过物理内存的 75%(Linux)”
- 元空间(Metaspace,取代永久代):
- -XX:MetaspaceSize / -XX:MaxMetaspaceSize:初始与上限;建议设置上限,避免无界增长
- 容器/本地内存与GC:
- -XX:+UseContainerSupport(JDK 8u191+ 默认开启):遵从容器内存限制
- 选择合适的GC(如 G1/ZGC),并按应用停顿目标与吞吐目标微调
- 版本与术语差异
- WebLogic 12c 及更早:常见 -XX:PermSize / -XX:MaxPermSize(永久代)
- WebLogic 12.2.x 及以后:使用 Metaspace,对应 -XX:MetaspaceSize / -XX:MaxMetaspaceSize
- 老版本中亦可在 startWebLogic.sh 或 commEnv.sh 中设置 MEM_ARGS 实现覆盖,但优先使用 setDomainEnv.sh 统一管理。
四 Ubuntu系统层面的配合与稳定性
- 资源与OOM治理
- 适度使用 cgroups 限制单实例内存,避免单实例异常拖垮整机
- 调整 oom_score_adj,降低关键进程被OOM Killer终止的风险
- 视内存压力启用 zram/zswap,为活跃进程保留更多物理内存
- 文件句柄与内核参数
- 提升进程可打开文件数与用户进程数(/etc/security/limits.conf):如 soft/hard nofile 65535、soft/hard nproc 65535
- 按需提升 fs.file-max 等内核参数,减少资源限制导致的异常
- 监控与验证
- 使用 top/htop、vmstat、iostat、sar 持续观察CPU、内存、I/O与换页
- 在 WebLogic 控制台与性能监控中核对实际堆与非堆使用,验证配置是否生效。
五 快速配置示例
- 场景A:单实例、物理内存 16GB、JDK 8(使用永久代)
- setDomainEnv.sh 片段:
- WLS_MEM_ARGS_64BIT=“-Xms8g -Xmx8g -XX:PermSize=512m -XX:MaxPermSize=1g”
- export WLS_MEM_ARGS_64BIT
- 场景B:单实例、物理内存 16GB、JDK 8u191+ 或 JDK 11+(使用Metaspace)
- setDomainEnv.sh 片段:
- WLS_MEM_ARGS_64BIT=“-Xms8g -Xmx8g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=1g”
- export WLS_MEM_ARGS_64BIT
- 场景C:容器/多实例,容器内存限制 8GB
- 启动容器时设置内存上限(例如 Docker:-m 8g),JVM 使用:
- “-Xms6g -Xmx6g -XX:+UseContainerSupport -XX:MaxMetaspaceSize=512m”
- 说明:堆与非堆合计应显著低于容器上限,为堆外与系统预留空间。