美文网首页
网络优化

网络优化

作者: wayyyy | 来源:发表于2020-12-29 08:59 被阅读0次

    网络性能排查工具

    image.png

    网络性能优化

    应用程序优化
    • 优化I/O模型
    套接字
    • net.core.optmem_max
      增大每个套接字的缓冲区大小

    • net.core.rmem_max 和 net.core.wmem_max
      增大套接字接收缓冲区大小 和 发送缓冲区大小

    • net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem
      增大 TCP 接收缓冲区大小 和 发送缓冲区大小

      tcp_rmemtcp_wmem 的三个数值分别是 min,default,max,系统会根据这些设置,自动调整 TCP 接收 / 发送缓冲区的大小。

    • 配置选项 TCP_NODELAY
      禁用 Nagle 算法。

    • 配置选项 TCP_CORK
      可以让小包聚合成大包后再发送,但是会阻塞小包的发送。

    • SO_SNDBUF SO_RCVBUF、
      分别调整套接字发送缓冲区和接收缓冲区的大小。

    传输层
    • TCP TIME_WAIT
      • 使用端口复用
      • fs.nr_openfs.file-max增大进程最大文件描述符数量和系统的最大文件描述符数
    • 缓解 SYN FLOOD
      • 增大 TCP 半连接的最大数量net.ipv4.tcp_max_syn_backlog
    网络层
    • 禁止ICMP主机探测,ICMP Flood 等各种网络问题
      禁止 ICMP 协议,即设置net.ipv4.icmp_echo_ignore_all = 1
    链路层

    由于网卡收包后调用的中断处理程序(特别是软中断),需要消耗大量的 CPU。所以,将这些中断处理程序调度到不同的 CPU 上执行,就可以显著提高网络吞吐量。这通常可以采用下面两种方法:

    • 为网卡硬中断配置 CPU 亲和性(smp_affinity),或者开启 irqbalance 服务。

    • 可以开启 RPS(Receive Packet Steering)和 RFS(Receive Flow Steering),将应用程序和软中断的处理,调度到相同 CPU 上,这样就可以增加 CPU 缓存命中率,减少网络延迟

    • 可以开启网络接口的多队列功能。这样,每个队列就可以用不同的中断号,调度到不同 CPU 上执行,从而提升网络的吞吐量。

    • 可以增大网络接口的缓冲区大小,以及队列长度等,提升网络传输的吞吐量(注意,这可能导致延迟增大)。

    • 还可以使用 Traffic Control 工具,为不同网络流量配置 QoS。

    其他
    • DPDK
    • kernel by pass 网卡

    相关文章

      网友评论

          本文标题:网络优化

          本文链接:https://www.haomeiwen.com/subject/ahxtoktx.html