www. On IT Road .com

排除网络性能缓慢的问题

  1. 使用 iperf 工具检查网络吞吐量,查看网络带宽利用率是否接近观察到的最大吞吐量。

  2. 适当设置网络参数的值以支持最大网络吞吐量。
    找到带宽延迟积 (BDP) 值并相应地设置网络缓冲区大小。
    它计算为链路带宽和往返时间的乘积。

例如:

对于 1Gb/s 网络和 0.1s 的路由跳闸时间,BDP=(0.1 * 10^9)/8.
在这样的网络上,在文件下设置以下参数值:/etc/sysctl.conf

# vi /etc/sysctl.conf
net.core.rmem_max = 12500000
net.core.wmem_max = 12500000
net.ipv4.tcp_rmem = 4096 87380 12500000
net.ipv4.tcp_wmem = 4096 65536 12500000

并增加以下参数:

# vi /etc/sysctl.conf
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_max_syn_backlog = 4096

然后执行命令:

# sysctl -p

a) 对于这两个更改,不需要重新启动系统。

b) 发布此更改后,需要监视命令“netstat -s”的输出并检查以下计数器是否仍在增加:

packets pruned from receive queue because of socket buffer overrun
times the listen queue of a socket overflowed
SYNs to LISTEN sockets ignored
packets collapsed in receive queue due to low socket buffer
TCPBacklogDrop
  1. 增加 NIC 的 RX Ring 缓冲区大小。
    设置此数字时需要进行权衡。
    较大的值可能会延迟数据包的处理,而较低的值可能会在相应的驱动程序在处理传入数据包时遇到延迟时导致数据包丢失。

a) 通常,首先将 RX 环大小加倍并监视命令“ethtool -S eth[x]”的输出。

# ethtool -G eth[x] rx 512

b) 要使此更改永久化,请将以下内容添加到文件: /etc/sysconfig/network-scripts/ifcfg-eth[x] :

# vi /etc/sysconfig/network-scripts/ifcfg-eth[x]
ETHTOOL_OPTS="-G rx 512"

网络性能变慢的原因

网络性能变慢可能有多种原因。
但一些可能的原因是:

  • 网络已经高负载,达到其最大容量并且存在拥塞。
  • 配置的接收缓冲区不足以满足网络负载。
  • 由于物理层错误导致丢包。
解决 Linux 中网络通信缓慢或者连接超时的问题

对慢速网络或者网络数据包丢失进行故障排除可能很棘手。
除了网络通信速度较慢之外,还可能观察到其他症状,例如:

  • 尝试使用 ssh 和/或者 sftp 连接到服务器会导致超时或者响应延迟。
  • 当网络负载变高时,观察到大量网络重传。
  • 在“ ifconfig eth[x] ”命令的输出中可能会看到大量数据包丢失。

其他一些症状还包括:

命令的输出:netstat -s 显示以下统计数据的递增值:(多次运行“netstat -s”):

13336 packets pruned from receive queue because of socket buffer overrun
516 times the listen queue of a socket overflowed
516 SYNs to LISTEN sockets ignored
2040077 packets collapsed in receive queue due to low socket buffer
TCPBacklogDrop: 744165

命令的输出: ethtool -S eth[x] 显示了计数器的递增值:“rx_fw_discards”:

rx_fw_discards: 4493
日期:2020-09-17 00:14:12 来源:oir作者:oir