我想通过 SFTP 从我们的服务器下载一个大 (1GB) 文件。我有一个 400Mbit 电缆连接,在 Windows 下,使用 WinSCP 从我的 Windows 计算机上下载速度约为 32Mbyte/s。
如果它尝试通过 SFTP 在我的 Mint Box 上下载该文件,它会保持 @ 10Mbyte/s。如果我尝试通过 HTTP 下载相同的文件,我将获得全部带宽。
两台计算机连接到同一交换机,并通过相同的电缆调制解调器路由器连接。它们的 ping 值相同,iperf 的速率也几乎相同。它们都能够处理这些传输速度,我说的不是 Raspberry Pi,而是最新的 Intel Core i5。
节流必须以某种方式与Linux(Mint Sonya)有关。我尝试在 IPTables 或 tc 中搜索任何可能执行此操作的规则,但没有找到。另外,我也不是 IPTables 和 QOS 内置 Linux 方面的专家。
我需要找到这里的瓶颈吗?我想使用 SFTP 全速下载文件。
答案1
原始海报提供了这个解决方案:
我偶然发现了解决方案。
我确信我不是唯一一个遭受 Mint 中 Linux 内核的这种限制行为的人。所以我决定在这里发布解决方案:
看起来内核 TCP 内存设置没有针对“高速”互联网连接进行优化。像我这样的“外行”搜索“SFTP Throtteling”或“Linux SFTP Download Limited”并没有得到这个问题的答案。事实上,这就是发生的事情。
所以我找到了一个 TCP 调整网站,其中有 TCP 内核调整选项(从 2003 年开始):
https://wwwx.cs.unc.edu/~sparkst/howto/network_tuning.php#Steps
这些会影响 TCP 协议的发送和接收内存消耗。该网站有一些旧的价值观,我调整了这些价值观以满足我的需要。
您可以在 中进行设置
/etc/sysctl.conf
,重新启动并享受超过 10MByte/s 的完整 sftp 速度,即使网站上显示的值也是如此。我的猜测是,SFTP 需要比 HTTP 更多的内存才能达到全速。