从我们的纽约数据中心传输到更远的位置的性能很差。
使用速度测试来测试不同的位置,我们可以轻松地使我们的 100 兆比特上行链路饱和到波士顿和费城。当我使用速度测试定位在美国或欧洲的西海岸时,我经常看到只有大约 9 mbit/s。
我的第一反应是这是一个窗口缩放问题(Bandwidth Delay Product)。但是,我已经在西海岸的一台测试机上调整了 Linux 内核参数,并使用 iperf 使窗口大小足以支持每秒 100 兆字节,但速度仍然很慢(已在捕获中验证)。我也试过禁用 Nagle 算法。
我们在 Linux 和 Windows 上的性能都很差,但使用 Windows 的速度明显更差(1/3)。
转移的形状(没有Nagle)是:
10 秒左右的下降有大约 100 个重复的 ack。
接收器随时间变化的最小窗口大小的形状为:

关于下一步去哪里确定我们的瓶颈有什么想法吗?
一些速度测试结果(使用 speedtest.net 上传):
更多数据:
迈阿密:69.241.6.18
2 stackoverflow-nyc-gw.peer1.net (64.34.41.57) 0.579 ms 0.588 ms 0.594 ms
3 gig4-0.nyc-gsr-d.peer1.net (216.187.123.6) 0.562 ms 0.569 ms 0.565 ms
4 xe-7-2-0.edge1.newyork1.level3.net (4.78.132.65) 0.634 ms 0.640 ms 0.637 ms
5 vlan79.csw2.newyork1.level3.net (4.68.16.126) …Run Code Online (Sandbox Code Playgroud) 在网络接口上,速度是根据数据随时间给出的,特别是每秒比特数。然而,在超快的计算世界中——一秒钟是很长的时间。
例如,给定线性衰减。每秒 1 GBit 的接口将每半秒执行 500Mbit,每四分之一秒执行 250Mbit 等。
我想在某些时间单位,这不再是线性的。也许这是由以太网频率、系统时钟速度、中断计时器等设置的。我相信这因系统而异——但有人有更多信息或白皮书吗?
我很好奇的主要原因之一是了解接口上的输出下降。即使每秒的速度远低于接口可以处理的速度——也许会有尖峰导致仅少量毫秒的下降。也许各种合并会隐藏这种效果——或者可能会在接收界面上增加它?队列在这里有什么不同吗?
示例:
因此,如果这与 MS 呈线性关系,我们将获得 1Mbit/MS,并且如果 Wireshark 没有扭曲我所看到的内容,当我的峰值超过 1Mbit 时,我是否应该看到下降?