WebLogic在Linux上的性能调优方法
小樊
40
2025-12-30 04:27:00
Linux上 WebLogic 性能调优方法
一 基线评估与容量规划
- 明确关键指标:并发连接数、请求响应时间(RT)、吞吐量(TPS)、错误率、JVM GC 停顿、CPU/内存/磁盘/网络利用率。
- 建立监控基线:在调优前后采集至少24–48小时数据,覆盖高峰时段,便于量化收益。
- 资源规划:为操作系统与监控工具预留10%–20%内存;磁盘优先使用SSD/NVMe;必要时使用Nginx/Apache作为反向代理与静态资源卸载。
- 变更流程:遵循“评估→压测→变更→验证→回滚”的闭环,所有参数先在测试环境验证再上线。
二 Linux 操作系统层调优
- 文件描述符与进程数
- 临时提升:ulimit -n 65535;永久生效:在 /etc/security/limits.conf 增加 “weblogic soft/hard nofile 65535”,以及 “weblogic soft/hard nproc 4096–8192”(按并发与线程需求调整)。
- 网络参数
- 提高连接队列与缓冲:net.core.somaxconn 1024–4096;net.core.rmem_max / net.core.wmem_max 按带宽与延迟调大。
- 加速回收 TIME_WAIT:net.ipv4.tcp_tw_reuse 1;net.ipv4.tcp_fin_timeout 30。
- 拥塞控制:net.ipv4.tcp_congestion_control 选择适配当前网络的算法(如 bbr/cubic)。
- 虚拟内存与I/O
- 降低换页倾向:vm.swappiness 10(减少磁盘抖动)。
- 脏页写回:vm.dirty_ratio 10–20,vm.dirty_background_ratio 5–10(避免突发写放大)。
- I/O 调度器:SSD 优先 noop/deadline,机械盘可用 cfq。
- 安全与可选项
- SELinux:如与中间件冲突,可在受控环境下设为 permissive 或关闭(需充分评估安全影响)。
- 生效方式:修改后执行 sysctl -p 或重启相关服务。
三 JVM 层调优
- 堆与元空间
- 建议 -Xms 与 -Xmx 设为相同,减少扩容抖动;例如 -Xms4G -Xmx4G(结合物理内存与应用负载)。
- Java 8 使用 Metaspace:设置 -XX:MetaspaceSize 与 -XX:MaxMetaspaceSize(如 256–512MB 起步,按类加载量调整)。
- 垃圾回收器
- 优先选择 G1 GC:-XX:+UseG1GC;可按需增加 -XX:MaxGCPauseMillis(如 200ms 目标)与 -XX:G1HeapRegionSize(按堆规模选择 1–32MB)。
- 启动与随机数源
- 加速启动:在 setDomainEnv.sh 中加入 -Djava.security.egd=file:/dev/./urandom;或将 $JAVA_HOME/jre/lib/security/java.security 中 securerandom.source 改为 /dev/./urandom。
- 日志与诊断
- 开启 GC 日志(示例):-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/opt/weblogic/logs/gc-$(date +%F).log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M。
- 注意事项
- 线程数过高会导致 native 内存压力与 OOM;必要时适度降低线程数或减小 -Xss,并确保使用 64 位 JDK/OS。
四 WebLogic 配置层调优
- 执行队列与线程
- 自调优线程池(WLS 10.3.x+):在 config.xml 设置 与 (如 200–1000,结合 CPU 与 RT 目标);或通过启动参数 -Dweblogic.threadpool.MinPoolSize / MaxPoolSize 设置(不同版本支持度不同,建议优先控制台/配置 XML)。
- 处理长事务:视业务将 StuckThreadMaxTime 从默认 600 秒适度上调(如 1200 秒),并配合应用优化,避免掩盖性能问题。
- JDBC 连接池
- 合理设置 Initial/Max Capacity(如 10/100 起步)、Connection Timeout(如 30 秒)、Statement/ResultSet 缓存与验证查询;避免连接风暴与泄漏。
- I/O 与集群
- 启用 Native I/O 提升网络吞吐;有状态业务建议配置 集群 与合适的会话复制/亲和策略,提升可用性与扩展性。
五 监控 验证与回滚
- 系统与应用监控
- Linux:top/htop、vmstat、iostat、sar、netstat/sockstat;关注 load、CPU steal、si/so、await、%util、TCP 重传。
- JVM:jstat -gc/-gccapacity、jstack、VisualVM/JConsole;关注 GC 次数/停顿、线程数、堆各代使用。
- WebLogic:控制台与 WLST 采集 JVM、线程、数据源、工作管理器、SLA 指标;必要时接入 Prometheus + Grafana 做长期可视化。
- 日志与容量
- 生产环境将日志级别调至 WARNING/ERROR,并使用 logrotate 做按日轮转与压缩,避免磁盘被撑满。
- 验证与回滚
- 每次变更后进行压测(如 JMeter/Locust),对比 RT、TPS、错误率、P95/P99 与 GC 指标;未达预期或出现稳定性问题则回滚至上一个稳定版本参数。