windows server 2012R2发起建立TCP连接特别慢的原因





windows server 2012R2发起建立TCP连接,有时会特别慢。下载一个http页面需要9秒多。


通过网络抓包,可以发现,建立连接前重发了三次[SYN, ECN, CWR],每次3秒正好9秒,然后改用标准的[SYN, ACK],很快就收到回应。

258 12.389716000 192.168.1.7 61.135.162.10 TCP 66 59114→80 [SYN, ECN, CWR] Seq=0 Win=8192 Len=0 MSS=1464 WS=256 SACK_PERM=1
337 15.393902000 192.168.1.7 61.135.162.10 TCP 66 [TCP Retransmission] 59114→80 [SYN, ECN, CWR] Seq=0 Win=8192 Len=0 MSS=1464 WS=256 SACK_PERM=1
449 21.390862000 192.168.1.7 61.135.162.10 TCP 62 [TCP Retransmission] 59114→80 [SYN] Seq=0 Win=8192 Len=0 MSS=1464 SACK_PERM=1
450 21.417300000 61.135.162.10 192.168.1.7 TCP 62 80→59114 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1440 SACK_PERM=1
451 21.417341000 192.168.1.72 61.135.162.10 TCP 54 59114→80 [ACK] Seq=1 Ack=1 Win=64800 Len=0

原来,2012默认是启用ecn,如果我们把2012当作台式机上网,即便访问的网站支持ecn,但我们上网设备(宽带路由器等)大多不支持ecn,
就会导致每次都要重试三次。

解决办法也很简单,执行下面命令禁止即可。

netsh interface tcp set global ecncapability=disabled


但是对于托管在机房的服务器,则不建议禁止,因为对于服务器一般不需要主动发起连接,
即便发起连接也是经过机房的路由器大多支持ecn。

ecn可以在网络发生拥堵时,改善网络利用率。详细可见

https://technet.microsoft.com/en-us/library/bb878122.aspx

你可能感兴趣的:(windows,server,2012,ECN,TCP)