我想知道 SO'ers 在调查网络延迟问题以及合并的各种解决方案和优化时使用的各种技术/提示/技巧/银弹。
我正在寻找可以应用于软件或硬件的解决方案。
例如:
- 增加套接字缓冲区大小
- 使用 OS 的反应器模式的最佳选项(选择并不总是最佳选项)
- 使用极端网卡,例如 bigfoot Killer 2100
- 网线尽量短,不要将网线相互缠绕
- 在 2 点之间复制大量数据时 - 考虑往返延迟并使用多个套接字连接来完全饱和链接
其他一些建议是什么?
我想知道 SO'ers 在调查网络延迟问题以及合并的各种解决方案和优化时使用的各种技术/提示/技巧/银弹。
我正在寻找可以应用于软件或硬件的解决方案。
例如:
其他一些建议是什么?
在过去 10 年左右的时间里,这里有几件事帮助我加快了速度或增加了带宽……
1)当您的节点在快速链路上物理上靠得很近并且数据包中的数据不小于 TCP 数据包开销时,关闭Nagle 算法。MS做了一篇关于这个的论文。一个反例是,当您的链路中有卫星连接时,由于所涉及的距离,一个数据包单程需要 800 毫秒。在这种情况下,Nagle 是一件好事。
2) 确保为您的链接和您的机器正确设置了 MTU 大小,以避免出现碎片问题。
3) 如果您在 Windows 上并且传出的数据包很小并且延迟很高,您还应该将套接字选项 SO_SNDBUF 设置为 0 以避免传输延迟。
这并不总是可能的,但如果您可以在靠近目的地的地方插入本地缓存服务器,这会有所帮助。