免责声明

免责声明

2014-10-09 更新

免责声明

这个问题类似于千兆网络速度莫名缓慢但因为后者在 5 年后仍未得到解答,而且我认为我能够添加更多细节,所以我就此主题发布了另一个问题。

背景

我们有 2 台 DELL PowerVault NX200 存储服务器。两台服务器均配备 Broadcom BCM5716 板载双千兆网卡(我仅使用其中一个端口)。这些存储服务器附带 Windows Server 2008 Storage Basic SP2,我最近重新安装并更新为最新版本。

我们最近发现服务器的网络速度很慢。我之前没有测试过连接速度,所以无法判断“正常”吞吐量是多少。不过,现在的速度肯定很慢。

问题

两台服务器的吞吐量约为 5-6 Mbits/秒。这是通过一天内多次运行 Iperf 测得的。服务器的吞吐量约为 90 Mbits/sec。

其他工具和方法也给出了相同类型的结果(例如 ttcp 或使用 Windows 资源管理器、Teracopy 等复制文件)。我将坚持使用 Iperf 结果以排除尽可能多的不相关组件(例如 SMB)。

什么不起作用

我尝试了几种方法,但都没有用。

  • 使用不同的全新网络电缆。我没有工具来正确测试电缆的质量,但使用相同的电缆在其他计算机上确实可以获得更快的速度。

  • 使用不同的 NIC(BCM5709),该 NIC 在另一台 Windows 2008 R2 服务器上运行良好。

  • 拔掉所有其他计算机的电源插头,并将服务器隔离在交换机上。

  • 将服务器连接到不同的交换机并没有改善情况。

  • 移除任何交换机并将 NIC 直接连接到 NIC。

  • 将 NIC 驱动程序和软件更新至 QLogic 的最新版本。

  • 将 NIC 参数更改为每个“速度和双工”模式。“自动协商”总是能带来最快的速度。

  • 其他 NIC 参数(例如巨型数据包大小,以匹配交换机支持)也是如此。大多数情况下,它不会改变任何东西,即使改变了,也只会让情况变得更糟。

  • 我也尝试了所有netsh interface tcp set global参数,包括autotuninglevel许多人建议禁用的参数。

  • TCPWindowSize注册表中的设置。Windows 2008 上会忽略此设置。

什么有效

启动到 CentOS 6。CentOS LiveCD 上一切正常。问题可能出在 Windows、驱动程序或设置上,而不是 NIC、交换机或电缆上。

(可能)相关问题

我能够重现大部分结果Windows TCP 窗口缩放过早达到稳定状态。强制 TCP 窗口也会在 Iperf 测试期间导致速度大幅提高。看来 Windows 的 TCP 窗口缩放在传输时无法正常工作。

Iperf 结果

两台服务器之间,12.1网卡手动设置为100Mbps全双工:

[  4] local 192.168.1.14 port 51535 connected with 192.168.1.12 port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-15.1 sec   640 KBytes   348 Kbits/sec
[  4] local 192.168.1.14 port 5001 connected with 192.168.1.12 port 50498
[  4]  0.0-10.3 sec  6.00 MBytes  4.90 Mbits/sec

在两台服务器之间,.12 NIC 手动设置为 100Mbps 半双工(“自动”结果相同):

[  4] local 192.168.1.14 port 51541 connected with 192.168.1.12 port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.2 sec  6.38 MBytes  5.23 Mbits/sec
[  4] local 192.168.1.14 port 5001 connected with 192.168.1.12 port 50509
[  4]  0.0-10.3 sec  6.12 MBytes  4.99 Mbits/sec

答案1

这可能是网卡和交换机上的流量控制问题,请参阅以下文章并确保禁用网卡和交换机上的流量控制。

http://www.smallnetbuilder.com/content/view/30212/54/

答案2

有时,网络过滤器(尤其是第三方防火墙和/或防病毒软件)可能会导致奇怪的网络故障。

您可以检查安装了哪些过滤器(在 powershell 中):

ls 'HKLM:\SYSTEM\CurrentControlSet\Control\Network\{4d36e974-e325-11ce-bfc1-08002be10318}' | 
    % { $_.GetValue('Description') } | 
    sort

或使用 regedit 手动操作。

另外,在 iperf 测试期间检查网络适配器驱动程序的 DPC(延迟过程调用)时序。 http://www.thesycon.de/deu/latency_check.shtml

另外,尝试在环回连接上运行 iperf(或者最好是 ntttcp)。

相关内容