问题
从我们托管在 Windows 2008 Server 上的 WCF 服务调用由 ISP 托管的 asp web 服务显示超时/web 服务无响应。
诊断
使用 Windows 网络监视器来捕获数据包并隔离发送到 Web 服务的数据包,我可以看到:
TLS 握手你好
TCP传输
TCP重传
TCP重传
TCP重传
TCP重传
TCP重传
TCP 协商比例因子
不支持 TCP 比例因子
这似乎没有显示对 TCP 负载的响应,这意味着 IP 块。
解决方案
联系网络服务提供商后,他们建议没有 IP 块,这个问题特定于 Microsoft Windows 2008 Server、动态 TCP 帧大小及其特定负载平衡器。
经过一些进一步的研究,我相信下面会解决。
要查看 autoTuningLevel 参数的当前配置,请执行以下步骤:
点击开始
单击所有程序,然后单击附件。
右键单击命令提示符,然后单击以管理员身份运行。
如果系统提示您输入管理员密码或进行确认,请键入密码,或单击继续。
在命令提示符下,键入以下命令,然后按 ENTER:netsh interface tcp show global
autoTuningLevel 参数的值列为接收窗口自动调整级别。
我们希望将其设置为正常
在命令提示符下,键入以下命令,然后按 ENTER:netsh interface tcp set global autotuninglevel=disabled
以下列表包括 autoTuningLevel 参数的所有可能值:
/disabled:将接收窗口设置为默认值。
/highlyrestricted:让接收窗口增长到超过默认值,但这样做非常保守。
/restricted:让接收窗口增长到超过默认值,但在某些情况下限制这种增长。
/normal:让接收窗口增长以适应大多数情况。
/experimental:让接收窗口增长以适应极端情况。
注意 实验值可能会降低常见场景中的性能。此值应仅用于研究目的。
问题
只需从独立来源寻找有关此问题的更多信息。
希望它会在某个时候被 MS 修补。
谢谢斯科特
参考: http: //support.microsoft.com/kb/935400
几件事:
这不是一个需要补丁的问题,因为它不是错误。这是一个功能增强。
Web 服务提供商负载平衡器不支持该功能,因此真正的问题是他们不支持它,而不是 Microsoft 实现了它。
如果解决方案是由于当前的负载平衡器而禁用服务器上的功能,那么这就是解决方案。
TCP Windows Scaling 的概念早在 1988 年就在RFC 1072中引入,并在 1992 年在RFC 1323中得到完善。
这里有更多信息:
https://www.google.com/#hl=en&gs_nf=1&tok=2Z0E4Znj0AxsSRXPwvVWBg&cp=13&gs_id=1k&xhr=t&q=TCP+Window+Scaling&pf=p&sclient=psy-ab&oq=TCP+Window+Sc&aq=0&aqi=g4&aql=&gs_l=&pbx =1&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&fp=41e29ab53187148e&biw=1920&bih=911