- 首页 >
- 问答 >
-
智能运维 >
- Ubuntu上WebLogic的内存管理技巧有哪些
Ubuntu上WebLogic的内存管理技巧有哪些
小樊
38
2025-12-06 19:22:51
Ubuntu上WebLogic内存管理技巧
一 堆与非堆内存的基线配置
- 设置堆大小:生产环境建议将**-Xms与-Xmx设为相同,避免运行期扩缩堆带来的抖动;堆总量不宜超过物理内存的70%,为操作系统和其他进程预留资源。示例:-Xms4g -Xmx4g**。年轻代可按堆的1/3~1/2配置,如**-Xmn2g~3g**;Eden/Survivor 可用**-XX:SurvivorRatio=8**控制。
- 设置非堆内存:Java 8 使用Metaspace,建议显式上限,避免无界增长导致系统内存被吃满,如**-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m**。
- 避免显式GC:加入**-XX:+DisableExplicitGC**,减少应用或框架误调用 System.gc() 引发的停顿。
- 64位与压缩指针:64位JVM默认开启**-XX:+UseCompressedOops**,降低对象指针开销。
- 快速参考(示例值,按实际负载与物理内存调整):
- 中小规模:-Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
- 大型高并发:-Xms8g -Xmx8g -Xmn4g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g
以上做法有助于稳定GC行为、降低停顿并避免OOM。
二 垃圾回收器选择与关键参数
- 吞吐量优先(多核CPU、批处理/后台任务偏多):-XX:+UseParallelGC -XX:+UseParallelOldGC,可按CPU核数设置并行线程,如**-XX:ParallelGCThreads=4/8**。
- 低延迟优先(交互/Web请求为主):-XX:+UseG1GC,结合目标停顿时间**-XX:MaxGCPauseMillis=150~200**,并可用**-XX:G1ReservePercent=15**、-XX:InitiatingHeapOccupancyPercent=35平衡回收时机与吞吐。
- 超大堆与极低停顿(Java 11+):-XX:+UseZGC或**-XX:+UseShenandoahGC**,适合大堆与对停顿敏感的场景。
- 选择要点:先以默认或并行GC建立性能基线,再在压测中逐步调整停顿目标/并发线程数,观察Young GC与Full GC频率与停顿分布。
三 在Ubuntu中设置与生效方式
- 方式一(推荐):在域目录的启动脚本中设置环境变量
编辑**$DOMAIN_HOME/bin/setDomainEnv.sh**,在文件末尾加入(示例):
export USER_MEM_ARGS=“-Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+DisableExplicitGC”
重启AdminServer/受管Server后生效。
- 方式二:通过WebLogic控制台设置
登录控制台 → 环境 → 服务器 → 目标服务器 → 配置 → 服务器启动,在“参数”字段追加JVM参数,保存并重启。
- 生效验证:
- 控制台:监视 → 性能查看堆与非堆使用、GC次数/时间。
- 操作系统:使用jstat -gc 观察年轻代/老年代、GC停顿;必要时配合top/htop确认RSS占用。
四 监控 诊断与系统层保障
- JVM诊断参数:开启**-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/weblogic/heapdumps**,并输出GC日志**-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/opt/weblogic/logs/gc_%t.log**,便于离线分析与定位泄漏与GC异常。
- 系统资源与稳定性:
- 监控与限流:用top/htop、vmstat、iostat、sar持续观察CPU/内存/IO;必要时用cgroups限制WebLogic进程资源,避免挤占关键服务。
- OOM防护:为WebLogic进程设置较低的oom_score_adj,降低在系统内存紧张时被OOM Killer终止的概率。
- 内存压缩与回写:在内存紧张但需保活更多物理页的场景,启用zram/zswap以压缩闲置页,缓解瞬时压力。
- 文件句柄:确保进程可打开足够文件描述符,编辑**/etc/security/limits.conf设置如soft nofile 8192、hard nofile 8192**,防止“too many open files”。
- 模式选择:生产环境启用产品模式,其线程池/连接池等默认更偏向性能与稳定。