我在新西兰有一个家庭服务器,在阿姆斯特丹有一个远程服务器,配置如下:
我有一个简单的测试脚本:
#!/bin/bash
for i in `seq 1 20`;
do
scp root@remoteserver:~/testfile.txt .
done
示例输出:
testfile.txt 100% 10MB 764.9KB/s 00:13
testfile.txt 100% 10MB 810.6KB/s 00:12
testfile.txt 100% 10MB 810.5KB/s 00:12
testfile.txt 48% 4960KB 11.6KB/s 07:36 ETA
testfile.txt
是 10MB 的随机数据。似乎大约 1/4 的传输将被锁定在 10KB/s 左右。其余的平均约为 800KB/s。现在,我当然不希望用 300 毫秒的 RTT(和未调整的 TCP 堆栈)使 1 Gigabit 管道饱和,因此可以预期 800KB/s 的上限。出乎意料的是以 10KB/s 完成的随机流。任何人都可以解释这种行为并提出解决方案吗?
一些额外的上下文:
- 本地和远程服务器都运行 Ubuntu。我尝试了不同的版本都无济于事。
- 这只是最近几周的问题。在此之前,我从未遇到过这种奇怪的行为。
- RTT 或链接的长度似乎对此有影响。在澳大利亚以外的服务器上没有看到相同的行为(即约 60 毫秒 RTT)。
- 切换到不同的欧洲国家似乎没有什么区别(即法国和德国的数据中心有同样的问题)。
我问网络工程,因为我相信这可能归结为互联网或我的网络的基础设施,而不是任一端点的某些配置问题。