如何在Ubuntu上对WebLogic进行性能调优

Ubuntu上WebLogic性能调优实操指南一 基线与环境准备将域运行在生产模式,并使用JDK 8/11/17对应的长期支持版本;确保安装Native IO库,优先启用NativeIO/NIO以提升网络吞吐。建立可复现的压测脚本与监控基线(QPS、RT、CPU、GC、线程队列、DB连接等待等),每次只调整1–2个参数并观察效果。打开WebLogic诊断:开启GC日志、HeapDumpOnO

Ubuntu上WebLogic性能调优实操指南

一 基线与环境准备

  • 将域运行在生产模式,并使用JDK 8/11/17对应的长期支持版本;确保安装Native IO库,优先启用NativeIO/NIO以提升网络吞吐。
  • 建立可复现的压测脚本与监控基线(QPS、RT、CPU、GC、线程队列、DB连接等待等),每次只调整1–2个参数并观察效果。
  • 打开WebLogic诊断:开启GC日志HeapDumpOnOutOfMemoryError,便于定位瓶颈与异常。
  • 若仍使用WebLogic 8.1/9.x的执行队列模型,建议迁移到Work Managers;如必须沿用,需显式启用81风格队列并设置线程数。上述做法可避免线程模型差异带来的调优偏差。

二 JVM与GC调优

  • 堆与非堆:生产环境将**-Xms 与 -Xmx 设为相同**,通常不超过物理内存的70%AdminServer与业务受管Server内存策略可区分(Admin取较小值)。
  • 代际设置:建议年轻代占堆的1/3–1/2(如 -Xmn),并合理设置 Survivor 区比例(如 -XX:SurvivorRatio=8)。
  • GC选择:
    • 吞吐量优先(Java 8):-XX:+UseParallelGC -XX:+UseParallelOldGC
    • 低延迟优先(Web 常用):-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1ReservePercent=15 -XX:InitiatingHeapOccupancyPercent=35
    • 超大堆/极低暂停(Java 11+):-XX:+UseZGC-XX:+UseShenandoahGC
  • 诊断参数:
    • -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/weblogic/heapdumps
    • -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:/opt/weblogic/logs/gc_%t.log
    • -XX:+DisableExplicitGC(避免应用误调用 System.gc)
  • 配置位置:在 $DOMAIN_HOME/bin/setDomainEnv.sh 中设置 USER_MEM_ARGS 或通过控制台“服务器启动参数”注入。

三 线程网络与I/O调优

  • 线程模型:
    • WebLogic 9+ 默认启用自调优线程池(Work Managers);若需沿用执行队列,需在 config.xml 中启用 81 风格队列并设置 ThreadCount(开发/生产默认分别为15/25)。
    • 自调优场景建议仅设置最小/最大线程数上下界,避免过度人工干预;传统执行队列需谨慎增加 ThreadCount,防止线程切换与资源争用。
  • 阻塞线程:根据业务合理设置Stuck Thread Max Time(默认600秒)与检测间隔,识别慢请求与死循环。
  • 网络与I/O:
    • 启用NativeIO;根据CPU与负载设置Socket Readers(如 -Dweblogic.SocketReaders=4)。
    • 调大Accept Backlog(如由50起按25%递增)以缓解高并发下的连接拒绝;必要时调整Login Timeout/SSL Login Timeout
  • 调优依据:在控制台“服务器 → 监视 → 性能”观察队列长度、吞吐、线程使用,结合压测逐步微调。

四 JDBC与连接池调优

  • 容量与稳定性:将连接池初始容量最大容量设为接近(或相等)以减小运行期扩缩带来的抖动;在峰值期允许适度扩容。
  • 关键指标:关注数据源的Active Connections High CountWaiting on Connection High CountWait Seconds High Count,据此平衡连接数、超时与验证策略。
  • 语句缓存:将Statement Cache Size提升到约300(默认10)以减少编译与解析开销。
  • 连接可用性:启用Test Connections On Reserve与合理的Seconds to Trust Idle Pool Connection,减少无效探活;数据库短时不可达时设置Connection Creation Retry Seconds提升启动可用性。
  • 事务优化:在涉及多资源的XA场景可考虑**LLR(Last Logging Resource)**以降低日志开销。

五 Ubuntu系统层面与监控告警

  • 资源与I/O:
    • 使用 cgroups 限制WLS进程资源,避免“吵闹邻居”;部署 vmstat、iostat、sar、iotop 持续观测CPU、内存、磁盘。
    • 适度降低vm.swappiness(如10)以减少换页;必要时启用 zram/zswap 提升低内存场景的弹性。
    • 选择合适文件系统(如 ext4/xfs/btrfs),并依据负载进行I/O调度与挂载选项优化。
  • 文件句柄与网络:提升fs.file-max与进程可打开文件数;结合负载优化TCP相关内核参数(如 somaxconn、backlog 等)。
  • OOM防护:为WLS进程设置较低的 oom_score_adj,降低被OOM Killer误杀概率。
  • 监控体系:在控制台监控基础上,引入 Prometheus + GrafanaNagios/Zabbix 做长期可视化与阈值告警,形成“压测—调参—验证—固化”的闭环。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1472211.html

(0)
派派
上一篇 2025-12-14
下一篇 2025-12-14

发表回复

登录后才能评论