温馨提示×

centos上weblogic性能瓶颈

小樊
36
2026-01-02 11:02:40
栏目: 智能运维

定位与排查路径

  • 明确目标并建基线:用JMeter/LoadRunner压测,记录CPU、内存、网络吞吐、磁盘I/O等,形成可回归的性能基线
  • 资源与内核:检查CPU绑定/超线程、NUMA亲和、磁盘IOPS/延迟、网络丢包/重传;必要时做**文件系统挂载选项(如noatime)内核参数(如vm.swappiness、TCP窗口)**优化。
  • WebLogic与应用:通过管理控制台/WLST观察线程池、JDBC连接池、JVM GC;用JConsole/JMXJProfiler/OptimizeIt定位热点与锁竞争;对JDBC/会话/执行队列按官方建议做专项调优。
  • 现场保留:异常时保存top/vmstat/iostat、netstat、server/access日志、thread dump、GC日志、heap dump,便于复盘。

常见瓶颈与对策

瓶颈维度 典型症状 快速定位 优化要点
CPU 持续接近100%,响应变慢 top/pidstat找进程;多次kill -3取thread dump,将LWP/线程ID转16进制nid对照堆栈 定位热点方法/锁;优化算法与SQL;适度并行;选择合适的GC策略(如G1)
内存 Full GC频繁、Old区涨、OOM -verbose:gc与GC日志曲线;必要时HeapDumpOnOutOfMemoryError 合理设置**-Xms/-Xmx**(建议等值);JDK8+设置**-XX:MaxMetaspaceSize**;修复泄漏(JDBC/缓存/会话)
线程与队列 队列积压、超时增多 管理控制台看执行线程/队列长度;thread dump看阻塞与等待 依据CPU/IO调整线程池;减少锁竞争;优化慢请求与下游依赖
JDBC/数据库 连接获取超时、吞吐上不去 数据源监控(活跃/等待/泄漏);开启profile connection leak 合理初始/最大/递增超时/验证;避免连接泄漏;优化SQL与索引
网络 吞吐低、时延高、丢包 sar/ifstat/ping/抓包 开启网卡多队列、调优TCP窗口/队列;必要时用Nginx/Apache做反向代理与静态资源卸载
存储/文件系统 I/O等待高、日志写入慢 iostat -x、vmstat;检查挂载与磁盘健康 使用XFS/ext4并合理挂载;调vm.dirty_ratio/background_ratio;减少同步日志级别与频率
随机数/熵 重启后控制台登录卡5–10分钟 观察类加载与阻塞点(如SecureRandom) 启动参数加入:-Djava.security.egd=file:/dev/./urandom
应用代码/第三方 某接口持续慢、热点方法固定 JProfiler/OptimizeIt采样;thread dump/火焰图 减少字符串/XSLT等重操作;缓存结果;修复HTTP客户端连接未释放等资源管理问题

关键配置建议

  • JVM(示例,按负载与硬件调优):
    • 堆大小:设置**-Xms=-Xmx**(如4G/8G),避免运行期扩缩;JDK8+增加**-XX:MaxMetaspaceSize**(如512M/1G)。
    • GC策略:优先G1 GC(如**-XX:+UseG1GC**),减少停顿并提升大堆吞吐。
    • 熵源:控制台或启动慢时加**-Djava.security.egd=file:/dev/./urandom**。
  • 操作系统:
    • 文件句柄:提高ulimit -n(如65535),并在/etc/security/limits.conf持久化。
    • TCP:启用net.ipv4.tcp_tw_reuse=1net.ipv4.tcp_fin_timeout=30,提升TIME_WAIT回收与短连性能。
    • 内存/IO:视负载调vm.swappinessvm.dirty_ratio/background_ratio,减少抖动。
  • WebLogic:
    • 线程与队列:结合CPU/IO与RT,调整执行线程数与队列策略,避免过多线程导致上下文切换与调度开销。
    • 数据源:设置Initial/Max Capacity、Increment、Inactivity Timeout、Test Connections on Reserve,并开启泄漏检测
    • 会话:尽量最小化会话、优先内存复制而非JDBC持久化,降低写放大与时延。

监控与诊断命令清单

  • 系统资源:
    • CPU/内存/负载:top、vmstat 1、free -m
    • 磁盘:iostat -x 1(关注await、svctm、util)
    • 网络:sar -n DEV 1、ifstat、ping、netstat -s
  • WebLogic与JVM:
    • 线程与阻塞:kill -3 多次取样;在thread dump中按**nid=0x…**匹配高CPU线程
    • GC与内存:-verbose:gc、GC日志分析;jmap -dump 获取heap dump;jconsole/JMX在线观测
    • 连接与泄漏:控制台/数据源监控;开启profile connection leak与日志跟踪

压测与回放流程

  • 测试环境复刻生产拓扑与数据,先建立基线指标(TPS、P95/P99、错误率、CPU/IO/GC)。
  • 阶梯式并发压测(如从20%到120%峰值),每级稳定10–15分钟,观察队列、错误与GC行为。
  • 针对瓶颈逐项调整(线程池/JDBC/GC/网络/存储/代码),每次变更只改一处并回放验证。
  • 将有效参数纳入变更单与基线库,上线后持续监控与告警

0