CentOS 上 WebLogic 性能调优实操清单
一 基线与环境准备
- 明确目标:优先提升吞吐量、降低P95/P99 延迟、稳定CPU/内存/IO使用率。
- 建立基线:用JMeter/LoadRunner压测,记录CPU、内存、网络吞吐、磁盘 I/O等关键指标,作为后续对比依据。
- 运行模式:生产环境务必使用生产模式,关闭开发期特性(如自动类重载、频繁JSP检查)。
- 架构与网络:高并发场景建议前置Nginx/Apache做反向代理与静态资源服务,启用异步非阻塞I/O,减轻 WebLogic 连接压力。
二 操作系统层优化
- 文件描述符与进程数
- 临时提升:ulimit -n 65535
- 永久生效:编辑**/etc/security/limits.conf**
- weblogic soft nofile 65535
- weblogic hard nofile 65535
- TCP/IP 与连接
- 启用端口复用与快速回收:
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_fin_timeout = 30
- 提升半连接/待处理队列:
- net.core.somaxconn = 4096
- net.ipv4.tcp_max_syn_backlog = 4096
- 可选:根据带宽与延迟调优窗口与队列
- net.ipv4.tcp_window_scaling = 1
- net.core.netdev_max_backlog = 5000
- 内存与虚拟内存
- 降低换页倾向:vm.swappiness = 10(范围 0–100,越低越倾向使用物理内存)
- 脏页刷写阈值(视负载微调):
- vm.dirty_ratio = 20
- vm.dirty_background_ratio = 10
- 文件系统与挂载
- 选择ext4/XFS,挂载时建议使用noatime减少元数据写入。
- 服务与 SELinux
- 关闭与业务无关的自启服务,释放资源。
- SELinux 如影响性能或排障困难,可在测试环境评估permissive或按需策略调整。
三 JVM 层优化
- 堆与元空间
- 将**-Xms与-Xmx设为相同值,避免运行期扩缩堆带来的抖动;例如:-Xms4G** -Xmx4G(请结合物理内存与容器/OS 预留)。
- Java 8+ 使用Metaspace,建议:-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M。
- 垃圾回收器
- 推荐G1 GC:-XX:+UseG1GC
- 可按需设置停顿目标:-XX:MaxGCPauseMillis=200
- 其他常用选项
- 启用并行 GC 线程:-XX:ParallelGCThreads=N(N≈CPU 物理核心数)
- 打印 GC 详情(仅调优期):-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/opt/weblogic/logs/gc.log
- 版本与 JDK 选择
- 优先使用Oracle JDK 8/11/17的长期支持版本;避免过旧或已停止维护的 JDK。
四 WebLogic 服务层优化
- 执行线程与工作管理器
- 通过控制台或 WLST 调整执行线程数(Work Manager/线程池),以压测结果为准,避免“线程过多导致上下文切换激增”或“过少导致排队”。
- 数据源与连接池
- 合理设置初始/最大/递增连接数,启用验证连接、超时回收、失败重试等策略,避免连接泄漏与雪崩。
- I/O 与协议
- 条件允许时启用Native I/O提升网络吞吐与 I/O 效率。
- 日志与开发特性
- 减少System.out.println与冗余日志;生产模式关闭自动类重载/JSP 检查等开发期功能。
五 监控验证与回滚
- 监控与诊断
- JVM:jstat、jconsole、VisualVM 观察GC 次数/停顿/堆使用。
- 系统:top、vmstat、iostat 观察CPU steal、上下文切换、I/O 等待。
- WebLogic:控制台/JMX/OEM 监控线程池队列、JDBC 活跃/等待、吞吐与错误率。
- 验证与迭代
- 每次变更先在测试环境验证,再灰度上线;对比基线指标评估收益与回退条件。
- 变更与回滚
- 关键配置(JVM、内核、线程池、连接池)变更前备份;出现异常按预案快速回滚。