【问题标题】:Disable TCP Slow Restart on Windows/.NET在 Windows/.NET 上禁用 TCP 慢重启
【发布时间】:2017-05-12 22:00:22
【问题描述】:

我正在设计一个自定义 TCP/IP 框架,我遇到了一些延迟问题,我认为这些问题是由 TCP 慢启动引起的。该框架将有相当长时间处于空闲状态的 TCP 连接,并且在空闲后通过连接发送的第一条消息比随后不久的消息要慢得多。

我在这篇文章中读到:Disable tcp slow start ,可以在 linux 平台上禁用/操作慢启动。有没有办法在 Windows 环境中实现这一点,无论是在代码中还是通过一些注册表或命令提示符功能?

【问题讨论】:

  • 您进行了哪些测试以确定导致问题的原因?您不想花费大量时间和精力来修复错误的东西。
  • 好吧,我启用了保活数据包并禁用了 Nagle 算法,当我将保活冷却时间设置为更短的时间以便在其他空闲时间保持线路繁忙时,延迟减少了。我在专用路由器上对其进行了测试,该路由器上只有我的测试设备运行自定义框架。除了导致这种行为的缓慢启动之外,我找不到任何其他原因,但如果您对其他可能的原因有任何其他想法,我会调查一下

标签: .net networking tcp


【解决方案1】:

increasing the initial congestion window 可能会对您有所帮助;这将使你的慢启动不那么慢。具体操作方式取决于您运行的 Windows 版本。在 Windows Server 2012 和 2016 中,您可以使用Set-NetTCPSetting cmdlet;在 2008 R2 中,您可以使用 netsh(您可能必须先安装 hotfix)。

你应该把它设置成什么?从 2013 年开始,上面链接的 RFC 建议 10:

为什么是 10 段?

关于如何挑选 10 号的问题已被提出。我们在大规模实验中尝试了不同的大小,发现 10 段似乎为我们测试的服务提供了大部分好处,同时不会导致重传率显着增加。展望未来,当 Web 对象大小的平均值继续增长时,10 个段可能会变得太小。但尚未开发出一种在长时间内自动“调整”初始窗口大小的方案。

但是,您可以在 2012 年和 2016 年将其增加到 64。您可以尝试不同的值并测试您的系统,看看哪个表现最好。

【讨论】:

  • 你知道如何在 Windows 7 Pro 上更改初始拥塞窗口吗?我尝试了 2008 R2 解决方案只是为了好玩,但它当然没有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多