centos上weblogic性能调优策略
小樊
31
2025-12-19 19:12:58
CentOS 上 WebLogic 性能调优策略
一 系统级调优
- 资源与权限基线
- 以非 root用户运行 WebLogic;关闭不必要的系统服务;将运行模式设为生产模式;必要时将 SELinux 调整为 permissive 或按需配置策略,减少权限拦截带来的额外开销。
- 文件句柄与进程数
- 提升进程可打开文件数:编辑 /etc/security/limits.conf(如:weblogic soft/hard nofile 65535),并在 systemd 服务单元中设置 LimitNOFILE=65535,确保重启后生效。
- 虚拟内存与脏页
- 降低交换倾向:设置 vm.swappiness=10;适度提高脏页刷写阈值(如 vm.dirty_ratio=100),减少抖动(具体值需结合负载与存储调优)。
- 网络栈关键参数
- 提升连接队列与端口资源:net.core.somaxconn、net.ipv4.tcp_max_syn_backlog 适度增大;net.ipv4.tcp_fin_timeout、net.ipv4.tcp_tw_reuse 合理调整;必要时启用 BBR 拥塞控制;扩大本地端口范围 net.ipv4.ip_local_port_range。
- 存储与文件系统
- 选择高性能文件系统(如 XFS/EXT4),挂载使用 noatime 减少元数据写入;优先使用 SSD/NVMe 降低 I/O 时延。
二 JVM 与 GC 调优
- 堆与元空间
- 将 -Xms 与 -Xmx 设为相同值以避免运行期扩缩堆带来的抖动;Java 8+ 使用 Metaspace,建议 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m(按应用类与字节码规模调整)。
- 垃圾回收器
- 大堆与低停顿场景优先 G1 GC:启用 -XX:+UseG1GC,并结合 -XX:MaxGCPauseMillis=200、-XX:InitiatingHeapOccupancyPercent=45 做稳态调优。
- 编译与栈
- 启用分层编译 -XX:+TieredCompilation;按需设置线程栈 -Xss=256k,避免过深调用栈导致内存浪费。
- GC 日志与诊断
- 开启 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/gc.log;必要时使用 Flight Recorder(商业特性)进行瓶颈定位。
三 WebLogic 服务器与数据源调优
- 执行模型与线程
- 优先使用 Work Managers 与自调优线程池;仅在维护 WebLogic 8.1 兼容或确有必要时才启用 use81-style-execute-queues 并使用传统执行队列。历史默认值参考:开发模式 15 线程、生产模式 25 线程,切勿盲目增大线程数,需结合 CPU 与 I/O 能力逐步压测评估。
- 线程阻塞与“卡住线程”
- 关注 Stuck Thread Max Time(默认 600s),对长事务或慢查询进行拆分、异步化或优化;必要时适度提高阈值,并配合应用侧慢 SQL/慢接口治理。
- 数据源与连接池
- 合理设置 Initial/Max Capacity 与 Increment,并配置 Inactive Connection Timeout、Connection Test 策略;避免连接风暴与泄漏,确保数据库端也能承受相应并发。
- I/O 与网络
- 在受支持与许可前提下启用 Native I/O 提升网络吞吐;在反向代理/负载均衡侧使用 Nginx/Apache 等高性能前端,减轻 WebLogic 承载压力。
四 监控 验证 与安全基线
- 监控与诊断
- 使用 WebLogic 管理控制台/WLST 持续采集吞吐、队列、线程与 GC 指标;通过 JMX(如 JConsole/VisualVM)或 OEM Cloud Control 做容量与瓶颈分析;对关键路径配置告警。
- 变更与回滚
- 任何参数调整先在测试环境验证,采用灰度/滚动方式上线,保留回滚方案;每次变更记录基线指标与变更单,便于复盘。
- 安全与运行基线
- 运行模式设为生产模式;禁用示例应用与默认账户;设置口令复杂度/锁定策略;更改默认端口;限制目录列表;开启日志与审计;以非 root运行;按需限制打开套接字数量。
五 快速参考配置示例
- 内核参数(/etc/sysctl.conf,示例值需结合业务与压测微调)
- vm.swappiness=10;vm.dirty_ratio=100;net.core.somaxconn=4096;net.ipv4.tcp_max_syn_backlog=4096;net.ipv4.tcp_fin_timeout=30;net.ipv4.tcp_tw_reuse=1;net.ipv4.ip_local_port_range=1024 65535;net.core.netdev_budget_usecs=20000
- WebLogic JVM 启动参数(setDomainEnv.sh 或启动脚本)
- -Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+TieredCompilation -Xss256k -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/opt/weblogic/logs/gc.log
- 调优提示
- 线程数、连接池容量、GC 目标与内核参数并非越大越好;以实际压测与监控数据为依据,围绕吞吐、P95/P99 时延、错误率与 GC 停顿做闭环迭代。