Server 2012 R2 上的 IIS 对远程客户端的服务非常缓慢

Server 2012 R2 上的 IIS 对远程客户端的服务非常缓慢

我们一直在尝试调试访问我们的 Web 服务器(2k12 R2 上的 IIS)的远程客户端的非常慢的传输速率。

到客户端的 RTT 约为 150ms,我们很难从 100Mbps 链路中获得超过 500kbps 的速度。客户端可以以超过 300MBit/s 的速度测试下载到本地速度测试服务器,因此我们认为问题不在于客户端,而在于发送端。

Wireshark 显示,发送方 (IIS) 从未发送超过 3 个数据包而不等待 ACK。我们看到的最大传输字节数约为 20KB。客户端公布的接收窗口约为 256kB,因此发送方根本没有填满窗口。

我们尝试了很多方法来解决这个问题,包括禁用 NIC 设置中的所有卸载选项、关闭启发式方法等等。这让我们抓狂,因为这意味着我们的服务器基础设施基本上无法用于此目的。

路由器:C2911/K9 服务器:配备 Broadcomm NIC 的 Dell R730s,运行 Hyper-V 2012 R2 虚拟机管理程序

我们可以看到上传到本地速度测试服务器的速度使我们的链接饱和,但我相信这只是因为延迟非常低。Wireshark 时间戳显示发送方正在等待它不应该等待的 ACK。

IIS 肯定不会使用小缓冲区或类似的东西进行串行阻塞发送?

答案1

我们追踪了此案例的问题。这是因为我们面向分界交换机的路由器上的端口设置错误。路由器接口设置为 1Gbit,但光纤是 100Mbit。交换机端口上的流量控制也被禁用,因此路由器向交换机发送大量数据,导致其丢弃数据包。

强制路由器接口速度为 100Mbit 解决了数据包丢失问题。

相关内容