零窗口消息的高实例

零窗口消息的高实例

在我的 Web 服务器上,我发现在高峰流量期间,从我的 Web 服务器向我的数据库服务器发送的零窗口更新消息的速率很高(在约 13 秒内有 106 个数据包或 300,000 个数据包)。

固件已更新:
我已将固件和驱动程序更新为戴尔为 BCM5709C 卡提供的最新版本。

TCP 卸载已启用:
事实上,我看到 Broadcom Advanced Control Suite 界面 (BACs) 中有一个活动的“总卸载 TCP 连接”,这说明 TCP 卸载已启用。我也没有看到服务器上的 CPU 占用率。

窗口缩放已启用:
窗口缩放已启用但使用不多。我看到 300,000 个数据包中有 20 个数据包设置了窗口缩放。

统计数据:
平均往返时间约为 2 毫秒,最大约为 3 毫秒。Web 服务器上的 CPU 使用率根本没有达到峰值。

问题:

  1. 我不相信网络服务器上的缓冲区应该填充这么多。
  2. 除了 CPU 之外,我是否还应该查看其他指标来了解缓冲区填满的原因?
  3. 假设所有内容都是最新的,我是否应该考虑调整 Windows 2008 Server R2 Web 服务器上的 TCP 参数?如果是这种情况,我应该做哪些调整?

答案1

这个问题已经有些老了。我不确定它是否仍未解决,但无论如何都会尝试一些故障排除建议。

首先,检查零窗口公告发生的位置很重要。在协议交换的某些点,如果 Web 服务器只是不希望在给定时刻有任何数据作为响应返回,并且可能已将给定套接字的接收缓冲区设置为 0,或者接收缓冲区已填满,只是在一段时间内没有从那里获取任何内容,那么零窗口公告出现在那里可能是完全合理的。调试此问题需要了解所使用的协议(最好是实现)。

对于任何常见的 LAN 设置,您不需要调整 TCP 参数的任何值,除了网络具有可变延迟或不可预测的数据包丢失等极端情况外,TCP 主要都是自我调整的。

答案2

我从未遇到过这种情况,但我预感问题出在应用程序层。我会先查看与 Web 进程相关的性能计数器。“Internet 信息服务 (IIS) 7.0 资源工具包”和“Internet 信息服务 (IIS) 7.0 管理员袖珍顾问”都包含有关性能监控和调优的信息,但遗憾的是两者都不是免费的。

http://www.microsoft.com/learning/en/us/book.aspx?ID=9550&locale=en-us

http://www.microsoft.com/learning/en/us/book.aspx?ID=10442&locale=en-us

编辑:

追踪此问题的一种可能方法(当然非常粗暴)是暂时停止服务器上的 Web 服务,并将一个大文件或大量小文件下载到 Web 服务器,看看是否具有相同的零窗口条件。如果是,那么您可能可以排除 Web 服务的任何资源问题作为原因。如果没有,那么您可以集中所有精力分析 Web 服务的资源使用情况以找出原因。

相关内容