WebLogic在Linux上如何优化性能
导读:Linux上WebLogic性能优化实战指南 一 基线与方法 明确目标:优先提升吞吐量、缩短响应时间、降低资源占用,避免“拍脑袋”调参。 建立基线:用JMeter/LoadRunner压测,记录CPU、内存、磁盘I/O、网络吞吐、P95/...
Linux上WebLogic性能优化实战指南
一 基线与方法
- 明确目标:优先提升吞吐量、缩短响应时间、降低资源占用,避免“拍脑袋”调参。
- 建立基线:用JMeter/LoadRunner压测,记录CPU、内存、磁盘I/O、网络吞吐、P95/P99时延、错误率等,形成可对比的基线。
- 定位瓶颈:结合压测与监控,识别是CPU饱和、内存/GC压力、磁盘I/O延迟、网络瓶颈还是数据库/应用代码问题。
- 小步验证:每次只改一类参数,保持其他条件一致,观察指标是否按预期改善,再进入下一轮。
- 持续监控:上线后保留监控与日志,定期复盘,防止退化。
二 Linux操作系统层优化
- 文件句柄与进程数
- 提升用户级限制:编辑**/etc/security/limits.conf与/etc/pam.d/login**,设置如:
soft/hard nofile 65535、soft/hard nproc 65535,并重启会话或系统生效。
- 提升用户级限制:编辑**/etc/security/limits.conf与/etc/pam.d/login**,设置如:
- 网络栈与连接
- 扩大本地端口范围:
net.ipv4.ip_local_port_range = 1024 65535。 - 提升半连接与全连接队列:
net.core.somaxconn、net.ipv4.tcp_max_syn_backlog、net.core.netdev_max_backlog。 - 优化TCP缓冲与行为:
net.core.rmem_default/wmem_default、net.core.rmem_max/wmem_max、net.ipv4.tcp_rmem/tcp_wmem;按需启用TCP窗口缩放、选择BBR拥塞控制;适度降低net.ipv4.tcp_keepalive_time(如1800秒)与net.ipv4.tcp_fin_timeout,提升长空闲连接回收与端口复用效率。
- 扩大本地端口范围:
- 虚拟内存与I/O
- 降低换页倾向:
vm.swappiness(如10);调整脏页刷写阈值:vm.dirty_ratio、vm.dirty_background_ratio,减少抖动。
- 降低换页倾向:
- 文件系统与存储
- 选择XFS/EXT4,挂载时使用noatime降低元数据开销;优先SSD/NVMe。
- NUMA与CPU亲和
- 多路CPU服务器注意NUMA绑定与CPU亲和性,减少跨NUMA访问延迟。
- 网络多队列
- 启用网卡多队列(RSS),让多核并行处理网络中断与收包。
三 WebLogic服务层优化
- JVM与GC
- 堆大小:在setDomainEnv.sh设置
-Xms与-Xmx且等值(如4G),避免运行期扩缩堆带来的停顿;堆上限一般不超过物理内存的50%~60%,并结合GC日志与暂停目标选择G1/ZGC。 - 启动加速与安全随机源:在
$JAVA_HOME/jre/lib/security/java.security将securerandom.source改为file:/dev/./urandom(注意路径中的./绕过已弃用提示)。
- 堆大小:在setDomainEnv.sh设置
- 线程与执行队列
- 使用WebLogic自调优线程池(推荐):在控制台或
config.xml设置< self-tuning-thread-pool-size-min>与< self-tuning-thread-pool-size-max>;旧版本可用-Dweblogic.threadpool.MinPoolSize/MaxPoolSize。 - 处理“卡线程/阻塞”:结合业务合理提升线程上限,并优化慢请求;必要时适度提高Stuck Thread Max Time(默认600s)以便告警与定位,但根本仍需缩短处理时长。
- 使用WebLogic自调优线程池(推荐):在控制台或
- 连接与I/O
- JDBC连接池:将InitialCapacity设为与MaxCapacity一致,减少运行期扩容;结合压测设置合理的最大连接数与超时。
- 启用Native I/O(控制台:Servers → Configuration → Tuning),提升高并发网络I/O处理能力。
- 调大Accept Backlog(控制台:Servers → Configuration → Tuning):默认50,当出现“connection refused/连接建立慢”时,可按约**25%**步进上调,直至症状消失。
四 监控 验证与常见陷阱
- 监控与诊断
- OS层:
top/vmstat/iostat/sar/ss -s观察CPU、内存、I/O、套接字与TCP状态;必要时用perf/火焰图定位热点。 - JVM层:
jstat -gc/jstack/VisualVM/JConsole/WLST采集GC、线程、内存与MBean指标,关注Full GC次数/停顿、线程阻塞、内存泄漏。
- OS层:
- 验证流程
- 任何变更先在测试环境回放基线场景,确认吞吐、P95/P99、错误率与资源利用率均改善,再灰度上线。
- 常见陷阱与对策
- 线程过多导致native内存不足/无法创建线程:减少线程数、降低
-Xss、必要时改用64位JDK与更大内存;压测时逐步逼近最优线程区间。 - 连接风暴与端口耗尽:扩大本地端口范围、复用连接、优化Keepalive与TIME_WAIT处理。
- 长事务与卡线程:优化慢SQL/慢接口、设置合理的Stuck Thread阈值与告警、拆分大事务。
- 线程过多导致native内存不足/无法创建线程:减少线程数、降低
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: WebLogic在Linux上如何优化性能
本文地址: https://pptw.com/jishu/761917.html
