nic*_*_eu 28 networking mac-osx-server sftp mac-osx latency
我正在尝试使用 SFTP 在国际上传输一组大文件,但我发现我的国际合作伙伴无法将上传速度提高到约 50k 以上,尽管双方的连接都非常好。我们可以以这种速度上传多个连接(所以不是带宽?),但是单个上传速度没有提高,这是一个问题,因为许多文件的大小为几 GB。
SFTP 使用标准的 Apple OSX“远程登录”SFTP 系统托管。
有没有办法提高上传速度,或者是否有不同的 SFTP 主机可以提供帮助?我不清楚这是配置问题还是协议的固有限制。
(出于安全原因,我需要使用端到端加密的对等连接——没有云服务)。
Mar*_*ryl 31
使用OpenSSHsftp客户端(您似乎在使用),您可以使用:
首先,尝试将两者加倍:
sftp -R 128 -B 65536 user@host
Run Code Online (Sandbox Code Playgroud)
您增加其中的哪一个可能并不重要。
增加任何一个应该有助于使您的高延迟连接饱和。通过上述设置,它会随时保持 8 MB 的数据在管道中流动(128*64K=8M)。
请注意,这仅有助于大文件传输。传输大量小文件时,它不会产生任何影响。
有关其他 (GUI) SFTP 客户端的一些背景知识和讨论,请参阅我对为什么 FileZilla SFTP 文件传输最大上限为 1.3MiB/sec 而不是使可用带宽饱和的回答的“网络延迟/延迟”部分。rsync 和 WinSCP 甚至更慢。
小智 5
(您在问题标题中提到“高延迟”,但在正文中没有提到。您是否测量了实际延迟,结果是什么?)
OpenSSH 有一个补丁可以显着提高高延迟网络链接的吞吐量:HPN-SSH:(强调我的)
OpenSSH 中的 SCP 和底层 SSH2 协议实现的网络性能受到静态定义的内部流量控制缓冲区的限制。这些缓冲区通常最终会成为 SCP 网络吞吐量的瓶颈,尤其是在长且高带宽的网络链路上。修改 ssh 代码以允许在运行时定义缓冲区可以消除此瓶颈。我们创建了一个补丁,可以消除 OpenSSH 的瓶颈,并且可以与其他服务器和客户端完全互操作。此外,HPN 客户端将能够更快地从非 HPN 服务器下载,HPN 服务器将能够更快地从非 HPN 客户端接收上传。
因此,尝试在接收端编译并使用 HPN-SSH,看看它是否可以提高您的传输速度。
我正在尝试使用 SFTP 在国际范围内传输一组大文件
尚未将其作为答案提及,但是当通过高延迟链接传输多个文件时,有一个非常简单的解决方案可以获得更好的性能:
并行传输多个文件。
这是您在问题中提到的解决方案。用它。
基本上,TCP 协议不能很好地处理具有大带宽延迟产品的连接 - 单个连接无法在任何时候保持足够的数据移动。请参阅https://en.wikipedia.org/wiki/TCP_tuning
由于每个连接受到TCP协议的限制,所以使用更多的连接即可。
您可以尝试启用压缩,看看是否有帮助。
\n\n从man sftp:
\n\n\n\n
-C启用压缩(通过 ssh 的 -C 标志)。
并来自man ssh:
\n\n\n\n
-C请求压缩所有数据(包括 stdin、stdout、stderr 以及转发的 X11、TCP 和 UNIX 域连接的数据)。压缩算法与 gzip(1) 使用的相同,并且 \xe2\x80\x9clevel\xe2\x80\x9d 可以通过协议版本 1 的 CompressionLevel 选项进行控制。在调制解调器线路和其他慢速连接上需要压缩,但只会减慢快速网络上的速度。可以在配置文件中逐个主机设置默认值;请参阅压缩选项。
听起来好像连接可能在其路径上的某个点受到速率限制(或者更确切地说,在我看来,这似乎是每个连接 50kB/s 的最简单解释,但多个此类连接是可能的),尽管它可能不是一个确保两侧的磁盘都不是一个因素是个坏主意。
\n\n您还可以运行快速 pcap 来查看是否存在任何“明显”问题(例如大量重传) - 但除非您有信心能够解决此问题,否则我可能只是看看启用压缩是否会帮助。
\n