Ubuntu环境下WebLogic内存优化实操指南
一 基线评估与监控
- 明确硬件与负载:记录物理内存总量、可用内存、CPU核数、磁盘类型(SSD/HDD)与业务峰值QPS/并发,避免“过度分配”或“分配不足”。
- 系统层监控:使用top/htop观察RES/内存占用,free -m查看可用内存与缓存,vmstat/iostat/iotop定位I/O与CPU瓶颈,建立持续监控基线。
- JVM层监控:通过jstat -gc、jstack、VisualVM/JConsole观察GC频率、停顿与线程状态;发生OOM时保留heap dump并用Eclipse MAT分析泄漏根因。
二 JVM堆与堆外内存的推荐设置
三 Ubuntu系统层优化
- 资源控制与OOM优先级:对WebLogic进程设置较低的oom_score_adj,降低被OOM Killer误杀概率;必要时用cgroups限制内存上限,避免单实例拖垮整机。
- 虚拟内存与缓存:适度降低vm.swappiness(如设为10)以减少换页;仅在必要时调整vm.dirty_ratio等脏页参数,避免长写停顿。
- 透明压缩与交换:在内存紧张但需保活更多进程的节点,启用zram/zswap提升可用物理内存的有效利用率。
- 文件描述符与内核:提升进程可打开文件数(如**/etc/security/limits.conf设置nofile 65535**),并视需要优化网络/文件相关内核参数,减少资源瓶颈对JVM的间接影响。
四 WebLogic内部参数协同优化
- 线程与队列:结合CPU核数与RT目标,适度提升线程池规模(如“CPU核数×50”作为上限参考的起点),避免队列过长导致请求排队与内存积压。
- JDBC连接池:将InitialCapacity设为与MaxCapacity一致,减少运行期频繁创建/销毁连接的开销;按压测结果设置最大连接数与超时。
- 网络与I/O:在控制台启用Enable Native IO,并在“服务器→配置→优化”中按需提升Accept Backlog,缓解高并发下的连接排队与拒绝。
- 监控与告警:启用WebLogic控制台与性能监控,结合JVM监控工具持续观察堆、GC、线程与数据源使用,出现异常及时扩容或回退变更。
五 快速排错与迭代流程
- 识别症状:出现OutOfMemoryError(堆/元空间/直接内存)、频繁Full GC、线程阻塞、响应抖动或“connection refused”等,先从日志与heap dump入手定位是泄漏、配置不足还是外部依赖瓶颈。
- 调整策略:优先校正Xms/Xmx/Xmn与MaxDirectMemorySize,再协同调整线程池与连接池;每次变更保持单一变量,配合压测验证。
- 固化与回归:将有效参数写入setDomainEnv.sh并纳入变更管理;保留回滚方案与监控基线,形成“监控→分析→调参→回归”的闭环。