温馨提示×

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.somaxconnnet.ipv4.tcp_max_syn_backlog 适度增大;net.ipv4.tcp_fin_timeoutnet.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 CapacityIncrement,并配置 Inactive Connection TimeoutConnection 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 停顿做闭环迭代。

0