FetchLinux:Linux中的网络优化策略
小樊
31
2025-12-20 13:00:26
Linux网络优化策略
一 基础与内核参数
- 增大监听队列与连接复用:提升高并发接入能力,减少队列溢出导致的连接失败。
- 建议值:net.core.somaxconn=65535;net.ipv4.tcp_tw_reuse=1;net.ipv4.ip_local_port_range=1024 61999;net.ipv4.ip_local_reserved_ports=9100(按业务保留端口)。
- 优化TCP缓冲区与窗口:提升带宽时延乘积(BDP)场景的吞吐。
- 建议值:net.core.rmem_max=16777216;net.core.wmem_max=16777216;net.ipv4.tcp_rmem=4096 87380 16777216;net.ipv4.tcp_wmem=4096 65536 16777216;net.ipv4.tcp_window_scaling=1。
- 加速连接回收与关闭:降低短连接场景的资源占用与时延。
- 建议值:net.ipv4.tcp_fin_timeout=30;net.ipv4.tcp_max_syn_backlog=8192;net.core.netdev_max_backlog=3000。
- 安全与重定向:减少被动攻击面与异常路由干扰。
- 建议值:net.ipv4.conf.all.accept_redirects=0;net.ipv4.conf.default.accept_redirects=0;对公网接口(如 eth0)同样设为 0。
二 网卡与多队列
- 队列与中断亲和:提升多核并行处理与包处理吞吐。
- 查看/设置队列:ethtool -l eth0;ethtool -L eth0 rx 4 tx 4。
- 启用 RSS(多队列分发):ethtool -K eth0 rxhash on。
- 分段卸载:降低CPU分段开销,提升大流量发送效率。
- 开启 GSO/TSO:ethtool -K eth0 gso on;ethtool -K eth0 tso on。
- RingBuffer 与突发流量:缓解瞬时洪峰丢包,但过大增加排队时延。
- 增大环形缓冲:ethtool -G eth1 rx 4096 tx 4096。
- 链路冗余与带宽聚合:提升可靠性与吞吐(Bonding)。
- 示例:modprobe bonding mode=0 miimon=100;创建 bond0 并在从属口配置 MASTER=bond0。
三 传输层与应用层实践
- 长连接与合并请求:减少握手与RTT次数,降低CPU与网络开销。
- 使用连接池、HTTP Keep-Alive、gRPC长连接;批量/管道化请求替代逐条小请求。
- 就近部署与内网域名:缩短RTT、降低带宽成本与NAT瓶颈。
- 同机房/同区域闭环调用;兄弟部门接口使用内网域名而非公网域名。
- 减少内存拷贝:提升文件/数据发送效率。
- 静态大文件传输优先 sendfile;内存映射 mmap 减少一次拷贝。
- 服务与协议栈协同:
- Web服务(Nginx):worker_processes auto;worker_connections 10240;use epoll;开启长连接与合理超时。
- 拥塞控制算法:根据链路选择(如 CUBIC/BBR),在高带宽时延积或丢包链路中BBR往往更优。
四 监控与诊断
- 实时与历史监控:定位瓶颈与验证调优成效。
- 带宽与连接:iftop -i eth0;nload eth0;sar -n DEV 1;ss -ant | awk ‘NR>1 {print $1}’ | sort | uniq -c(观察 ESTAB、TIME-WAIT、SYN-RECV)。
- 请求耗时分解:识别DNS、TCP、服务端处理各阶段耗时。
- curl -w “DNS解析: %{time_namelookup}s TCP连接: %{time_connect}s 服务器处理: %{time_starttransfer}s 总耗时: %{time_total}s\n” -o /dev/null -s http://example.com。
- 抓包与深度分析:定位握手、重传、延迟抖动等网络问题。
- tcpdump -i eth0 -w http.pcap ‘port 80’;用 Wireshark 分析三次握手与响应延迟。
五 安全与注意事项
- 谨慎开启 TIME-WAIT 快速回收:net.ipv4.tcp_tw_recycle 在NAT/负载均衡或多宿主机场景可能引发问题,现代内核默认关闭,不建议开启;优先使用 tcp_tw_reuse。
- 变更流程与回滚:调参前备份;先在测试环境验证;变更后持续观测丢包、重传、连接成功率与P95/P99时延。
- 资源与上限:同步提升 fs.file-max、进程/线程与端口范围,避免“Too many open files”或端口耗尽。
- 风险提示:内核与网卡参数错误可能导致网络中断或性能退化;生产环境请灰度变更并保留回滚方案。