温馨提示×

WebLogic在Ubuntu上如何调优

小樊
42
2025-12-12 18:21:12
栏目: 智能运维

Ubuntu上WebLogic性能调优实操指南

一 系统层优化

  • 资源与监控
    • 使用top/htop观察CPU、内存与负载;用vmstat、iostat、sar、iotop持续跟踪系统瓶颈(CPU等待、I/O吞吐、队列长度)。
    • 通过cgroups对CPU/内存/I/O做资源隔离与上限控制,避免单实例抢占全机资源。
  • 内存与OOM
    • 调整关键进程的oom_score_adj,降低被OOM Killer误杀的概率(例如将WebLogic设为较低值)。
    • 启用zram/zswap提升低内存场景下的可用性与响应。
  • 文件系统与I/O
    • 依据负载选择ext4/xfs/btrfs;对高IOPS场景优先本地SSD与条带化;关注vmstat/iostat的await、svctm、util等指标。
  • 内核与网络
    • 提升fs.file-max等文件句柄上限;按需优化TCP相关参数(如somaxconn、tcp_tw_reuse等)以减少连接排队与TIME_WAIT堆积。

二 JVM与WebLogic关键参数

  • 运行模式
    • 将域设置为产品模式(PRODUCTION_MODE=true),可获得更保守且适合生产的默认参数(如执行队列线程、JDBC连接池容量等)。
  • JVM堆与元空间
    • 在域的启动脚本(如startWebLogic.shsetDomainEnv.sh)中设置堆大小,建议**-Xms 与 -Xmx 等值**,减少堆扩展带来的抖动;示例:MEM_ARGS=“-Xms4g -Xmx4g”。
    • 元空间按JDK版本设置:JDK 8及以后使用**-XX:MaxMetaspaceSize=…;JDK 7及以前使用-XX:MaxPermSize=…**。
  • 线程与连接
    • 线程池:在WebLogic 12c及以后使用自调优线程池(控制台:服务器 > 配置 > 调整 > 自调优线程池);在11g可通过控制台或config.xml设置执行队列线程(如默认队列的Thread Count,常见经验值为每CPU不超过50线程,需压测校准)。
    • 连接池:将JDBC MaxCapacity与业务并发/线程数匹配,必要时开启Statement Cache;驱动选择更轻量的实现。
    • 网络与I/O:适度提高Accept Backlog以缓解高并发接入拥塞;在支持的版本/平台上启用Native IO以提升网络吞吐。

三 Ubuntu与Linux系统限制与稳定性

  • 文件句柄与线程数
    • 检查与提升限制:ulimit -n(文件句柄)、ulimit -u(用户进程/线程数);必要时在**/etc/security/limits.conf/etc/security/limits.d/**中持久化。
  • 内存与线程失败排查
    • 若出现“Attempting to allocate … There is insufficient native memory …”或“Resource temporarily unavailable in tsStartJavaThread”,优先检查:堆是否过大、线程数是否过多、-Xss是否过小、是否使用64位JDK/OS、系统可用内存与swap是否充足。
  • 容器与cgroups
    • 在systemd服务或容器环境中显式声明LimitNOFILE、LimitNPROC等资源上限,避免被默认cgroup限制。

四 监控与容量规划

  • WebLogic内置监控
    • 使用Administration ConsolePerformance Monitoring观察线程池使用率、队列长度、JDBC活跃连接、Stuck Thread等指标;结合吞吐与延迟变化做迭代调参。
  • 系统与业务可观测性
    • 构建Prometheus + Grafana监控大盘,采集OS(CPU、内存、I/O、网络)、JVM(GC、堆、线程)与应用(RT、错误率、QPS)指标,设置阈值告警,形成持续优化闭环。

五 快速检查清单与示例配置

  • 快速检查清单
    • 运行模式为产品模式;JVM堆**-Xms=-Xmx且合理;线程池与JDBC MaxCapacity匹配业务并发;Accept Backlog与网络队列无溢出;系统ulimit/内核参数已按负载上调;开启Native IO**(如可用);已部署监控与告警
  • 示例配置片段
    • 启动脚本(setDomainEnv.sh 或 startWebLogic.sh 的 MEM_ARGS 段):
      • MEM_ARGS=“-Xms4g -Xmx4g -XX:MaxMetaspaceSize=1g”
    • 11g 执行队列线程(示例为控制台或 config.xml 的默认队列):
      • Thread Count:按“每CPU≤50线程”的经验值起步,压测后微调
    • JDBC 连接池(示例):
      • Initial Capacity ≈ Max Capacity;Max Capacity 与线程池承载量匹配;开启 Statement Cache
    • 网络与I/O:
      • Accept Backlog:从50起步,高并发下逐步上调;Native IO:启用(如可用)
    • 提示:所有变更需滚动重启并保留回滚方案;每次只变更一个变量,配合监控验证效果

0