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.sh 或setDomainEnv.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 Console 与Performance 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:启用(如可用)
提示:所有变更需滚动重启 并保留回滚方案;每次只变更一个变量,配合监控验证效果