CentOS 上 WebLogic 性能优化实战指南
一 优化总览与基线
- 明确目标:优先提升吞吐量、缩短响应时间、降低资源占用,避免“拍脑袋”调参。
- 建立基线:用JMeter/LoadRunner压测,记录CPU、内存、网络、磁盘 I/O与关键业务指标,形成可对比的基线数据。
- 定位瓶颈:结合监控判断是CPU过载、内存/GC压力、磁盘I/O延迟、网络延迟还是数据库瓶颈,再针对性优化。
- 变更流程:每次只改一类参数,先在测试环境验证,观察稳定性与回退方案,再灰度上线。
- 持续迭代:上线后持续监控与复盘,按负载变化滚动微调。
二 操作系统与网络层优化
- 资源与进程:关闭不必要的系统服务,释放内存与 CPU;必要时调整SELinux为permissive或按需禁用,减少权限拦截带来的额外开销。
- 文件句柄与进程数:提升单进程可打开文件数,编辑**/etc/security/limits.conf**(示例:nofile 65535),并确认 systemd 作用域一致。
- 内存与脏页:降低vm.swappiness(如10),合理设置vm.dirty_ratio / vm.dirty_background_ratio,减少抖动与写放大。
- 文件系统:选择XFS/EXT4,挂载使用noatime降低元数据写开销。
- TCP/IP 与连接:
- 开启net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_fin_timeout=30,加速TIME_WAIT回收;
- 适度增大Accept Backlog与SYN 队列,缓解高并发建连拥塞;
- 启用TCP 窗口缩放、合理设置接收/发送缓冲区;
- 选择拥塞控制算法BBR,提升长肥管道吞吐;
- 开启网卡多队列(RSS/多队列),提升高带宽场景网络处理能力。
三 JVM 与垃圾回收优化
- 堆与元空间:将**-Xms与-Xmx设为相同值**(如4G或按内存与负载测算),避免运行期扩缩堆带来的停顿;Java 8+使用Metaspace,初始与最大值可设256M–512M,按需调整。
- 运行模式:生产环境启用产品模式(Production Mode),获取更保守、更稳定的默认配置。
- GC 选择:优先使用G1 GC(如**-XX:+UseG1GC**),在大堆与低延迟场景具备更好的吞吐与停顿平衡。
- 放置建议:将AdminServer与Managed Server分离部署,避免管理流量影响业务线程与 GC。
四 WebLogic 服务层关键参数
- 执行线程与工作队列:
- 新版 WebLogic 默认启用自调优线程池;如需兼容旧版或做边界控制,可在控制台或启动参数中设置最小/最大线程数(如**-Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=500**);
- 监控Stuck Thread Max Time(默认 600s)与队列长度(Queue Length),出现排队或“stuck”时优先优化慢请求/慢 SQL,再考虑适度增线程与延长超时。
- 数据源与连接池:设置合理的初始容量、最大容量、递增步长,并配置重试创建频率、登录延迟、非活动连接超时,避免连接风暴与泄漏。
- I/O 与网络:在受支持与许可前提下启用Native I/O提升套接字复用效率;结合压测与监控Accept Backlog与队列长度,必要时增大队列。
- 日志与应用:降低日志级别、减少System.out/大量日志,避免同步刷盘拖慢请求;生产环境关闭开发期热加载与频繁检查。
五 集群、前端与监控落地
- 集群扩展:按瓶颈横向扩展Managed Server,前端使用Nginx/Apache做反向代理/负载均衡与静态资源卸载,提升整体并发与可靠性。
- 前端与协议:启用HTTP/2或KeepAlive,复用连接降低握手开销;静态资源走CDN或边缘缓存。
- 监控与诊断:
- 使用WebLogic 管理控制台/WLST采集指标与变更配置;
- 通过JMX接入JConsole/VisualVM观察线程、堆、连接池等;
- 使用**Oracle Enterprise Manager Cloud Control(OEMC)**做容量与性能趋势分析;
- 结合top/vmstat/iostat与 GC 日志,闭环验证每次调参的收益与副作用。