温馨提示×

Linux中WebLogic性能调优技巧

小樊
45
2025-12-14 11:51:31
栏目: 智能运维

Linux下WebLogic性能调优要点

一 操作系统与网络

  • 文件描述符与进程限制
    • 提高单进程可打开文件数:在 /etc/security/limits.conf 增加如:* soft nofile 65536* hard nofile 65536;在 /etc/pam.d/login 加入 session required pam_limits.so;用 ulimit -n 验证。系统级上限查看:cat /proc/sys/fs/file-max
  • 可用端口与本地端口范围
    • 扩大客户端端口池:net.ipv4.ip_local_port_range = 1024 65535,提升高并发短连接场景的端口可用性。
  • TCP连接跟踪与会话回收
    • 如启用连接跟踪(如 NAT/iptables),适当提升 net.ipv4.ip_conntrack_max;缩短回收时间以更快复用资源:net.ipv4.tcp_fin_timeout = 30(默认 240 秒)。
  • 网络缓冲与队列
    • 提升默认/最大套接字缓冲:net.core.rmem_default / wmem_defaultnet.core.rmem_max / wmem_max
    • 为长肥管道或高带宽场景设置套接字缓冲区间:net.ipv4.tcp_rmem / tcp_wmem(最小/默认/最大)。
    • 加速检测死连接:net.ipv4.tcp_keepalive_time = 1800(默认 7200 秒)。
    • 提升突发入站连接处理能力:net.core.netdev_max_backlognet.core.somaxconn
  • 虚拟内存与脏页策略
    • 降低换页倾向:vm.swappiness = 10;根据负载调整脏页写回阈值(如 vm.dirty_ratio / dirty_background_ratio),减少抖动。

二 JVM与垃圾回收

  • 堆与元空间
    • 生产环境建议 -Xms 与 -Xmx 等值(避免运行期扩缩堆带来的抖动);堆一般不超过物理内存的 70%,为 OS 与其他进程预留资源。
    • Java 8+ 使用 Metaspace:设置 -XX:MetaspaceSize-XX:MaxMetaspaceSize,防止无界增长。
  • 年轻代与 Survivor
    • 常见做法:-Xmn ≈ 堆的 1/3~1/2;可按对象生命周期调节 -XX:SurvivorRatio(如 8)。
  • 垃圾回收器选择
    • 吞吐量优先(Java 8):-XX:+UseParallelGC -XX:+UseParallelOldGC
    • 低延迟优先(Web 应用常用):-XX:+UseG1GC,可配合 -XX:MaxGCPauseMillis-XX:G1ReservePercent-XX:InitiatingHeapOccupancyPercent
    • 超大堆与极低暂停(Java 11+):-XX:+UseZGC-XX:+UseShenandoahGC
  • 诊断与稳定性
    • 开启 OOM 堆转储:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=…
    • GC 日志:-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/gc_%t.log
    • 避免显式 GC:-XX:+DisableExplicitGC;64 位默认开启 -XX:+UseCompressedOops;生产启用 -XX:+UseServer
  • 在 WebLogic 中设置
    • 推荐在 $DOMAIN_HOME/bin/setDomainEnv.sh 中设置 USER_MEM_ARGS;或在控制台:环境 → 服务器 → 目标服务器 → 配置 → 服务器启动 → 参数。

三 WebLogic线程与工作管理

  • 使用 Work Managers 而非传统执行队列
    • 新版 WebLogic 默认启用自调优执行队列,官方建议通过 Work Managers 来分配与优化请求处理,必要时再考虑回退到 8.1 风格队列(需显式配置并重启)。
  • 老版本或兼容模式的队列调优
    • 若使用 8.1 风格队列,默认线程数:开发模式 15、生产模式 25;可按需调大 ThreadCount,但盲目增大将增加上下文切换与内存开销,需结合压测评估。
  • 监控与排障要点
    • 关注控制台 Monitoring → Performance 中的 Queue Length(等待队列),应接近 0;持续大于 0 表示处理能力不足或存在阻塞。
    • 合理设置 Stuck Thread Max Time(默认 600 秒),配合应用优化与线程数调整,避免“卡线程”拖垮服务。

四 数据库与连接池

  • 合理设置 JDBC 连接池
    • 最大连接数不应超过数据库最大连接上限;初始/最小连接数保证冷启动可用;根据负载设置合理的递增/递减超时策略,避免连接风暴与泄漏。
  • 语句与事务优化
    • 使用预编译语句、合理的Fetch Size批量提交;减少长事务与锁等待;对热点数据使用应用级缓存(如 Redis/Memcached)降低数据库压力。
  • 连接泄漏治理
    • 启用泄露检测超时回收;在测试与生产中持续验证连接数曲线与回收时延。

五 部署架构与监控实践

  • 架构层面优化
    • 静态资源上 CDN,减少应用节点压力;前置 负载均衡 做横向扩展与故障隔离;读写分离、缓存层与异步化改造可显著提升吞吐与稳定性。
  • 持续监控与迭代
    • 监控 CPU、内存、磁盘 I/O、网络、JVM GC、线程队列、DB 连接 等关键指标;使用 Nagios/Zabbix 等做告警;以基准测试 → 逐步调参 → 压力测试 → 复盘的闭环持续优化。

0