温馨提示×

如何在Linux上优化WebLogic网络设置

小樊
39
2025-12-24 08:10:56
栏目: 智能运维

Linux上优化WebLogic网络设置的实操指南

一 操作系统层网络与文件句柄优化

  • 提升进程可打开文件数与系统级句柄上限
    • /etc/security/limits.conf 增加(示例为 65535,可按需放大):
      * soft nofile 65535
      * hard nofile 65535
      
    • /etc/pam.d/login 或发行版对应会话文件加入:
      session required pam_limits.so
      
    • 检查与临时生效:ulimit -ncat /proc/sys/fs/file-max。WebLogic 大量并发连接依赖文件描述符(socket 也属于文件)。
  • 扩大本地端口范围与加快端口回收
    • 建议将本地端口池扩展到接近整个可用区间(示例为 1024–65535):
      net.ipv4.ip_local_port_range = 1024 65535
      
    • 启用端口复用(注意:在 NAT/负载均衡 场景慎用 tcp_tw_recycle,可能与 tcp_timestamps 共同开启时引发问题):
      net.ipv4.tcp_tw_reuse = 1
      # net.ipv4.tcp_tw_recycle = 1   # NAT/负载均衡环境不建议开启
      net.ipv4.tcp_fin_timeout = 30
      net.ipv4.tcp_max_tw_buckets = 5000
      
  • 增大 TCP 缓冲区与套接字队列
    • 提升默认与最大发送/接收缓冲,增强高带宽/长肥管道场景的吞吐:
      net.core.rmem_default = 131072
      net.core.wmem_default = 131072
      net.core.rmem_max     = 134217728
      net.core.wmem_max     = 134217728
      net.ipv4.tcp_rmem = 4096 87380 134217728
      net.ipv4.tcp_wmem = 4096 65536 134217728
      
    • 提升监听与网卡接收队列,缓解突发连接冲击:
      net.core.somaxconn = 65535
      net.core.netdev_max_backlog = 8096
      
  • 启用并优化 TCP Keepalive
    • 更快发现异常/半开连接(示例:1800 秒开始探测,可按业务 RTO 调整):
      net.ipv4.tcp_keepalive_time = 1800
      net.ipv4.tcp_keepalive_intvl = 30
      net.ipv4.tcp_keepalive_probes = 3
      
  • 生效与验证
    • 写入 /etc/sysctl.conf 后执行:sysctl -p
    • 使用 ss -snetstat -scat /proc/sys/net/core/somaxconn 等验证。

二 WebLogic层网络与协议参数

  • 线程与队列
    • WebLogic Administration Console 调整 Maximum Threads(最大线程数)与 Accept Backlog,使其与 somaxconn、业务并发目标匹配;队列过小会导致新连接被丢弃或超时。
  • 协议与超时
    • 启用 HTTP Keep-Alive 并设置合理的 Keep-Alive Timeout,减少握手开销;根据往返时延与客户端行为设置 Connection Timeout / Idle Timeout,避免长空闲占用资源。
  • 传输层优化
    • 在受控网络下可考虑关闭 Nagle 算法TCP_NODELAY=true)以降低小包延迟;若内核与客户端均支持,可启用 TCP Fast Open(需 WebLogic/容器与 OS 共同支持)。
  • 反向代理与负载均衡
    • Nginx/HAProxy/硬件LB 前置,复用长连接、做连接限速/熔断与健康检查,降低后端 WebLogic 的短连接压力与抖动。

三 防火墙与连接跟踪

  • 放宽连接跟踪上限(启用 nf_conntrack 时)
    • 检查与调大:sysctl -a | grep conntrack_max;在 /etc/sysctl.conf 增加(示例 1048576,需结合内存评估):
      net.netfilter.nf_conntrack_max = 1048576
      
    • 注意:该值过大将增加内核内存占用,应与实际并发与内存容量匹配。
  • 安全与变更策略
    • 不建议直接关闭防火墙;应通过区域/服务/端口精细化放行,变更前在测试环境验证,变更窗口内回滚预案完备。

四 监控验证与回滚

  • 基线采集与压测
    • 采集基线:ss -snetstat -ssar -n DEV 1cat /proc/net/sockstat;使用 JMeter/ wrk/ ab 做渐进式压测,观察错误率、P95/P99 时延、连接数、重传率。
  • 在线观测
    • 结合 WebLogic ConsoleJVisualVM/jstat、系统监控(如 top/htop/dstat)定位瓶颈(线程不足/队列溢出/带宽饱和/丢包重传)。
  • 变更管理
    • 参数分批上线、保留回滚脚本(如 sysctl -p 回滚文件、limits 与 systemd 服务文件备份),在灰度/维护窗口执行,异常自动回滚。

五 参数示例与注意事项

  • 示例 sysctl 片段(按业务与硬件调优,先小步放大并压测验证)
    fs.file-max = 1048576
    
    net.core.rmem_default = 131072
    net.core.wmem_default = 131072
    net.core.rmem_max     = 134217728
    net.core.wmem_max     = 134217728
    net.ipv4.tcp_rmem = 4096 87380 134217728
    net.ipv4.tcp_wmem = 4096 65536 134217728
    
    net.core.somaxconn = 65535
    net.core.netdev_max_backlog = 8096
    
    net.ipv4.ip_local_port_range = 1024 65535
    net.ipv4.tcp_tw_reuse = 1
    # net.ipv4.tcp_tw_recycle = 1   # NAT/负载均衡环境不建议
    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_max_tw_buckets = 5000
    
    net.ipv4.tcp_keepalive_time = 1800
    net.ipv4.tcp_keepalive_intvl = 30
    net.ipv4.tcp_keepalive_probes = 3
    
    # 如启用 conntrack
    net.netfilter.nf_conntrack_max = 1048576
    
  • 注意事项
    • 所有数值需结合 CPU/内存/带宽/时延 与业务目标调优,避免“一刀切”;在 NAT/负载均衡 场景谨慎开启 tcp_tw_recycle;变更务必先在测试环境验证并保留回滚路径。

0