在 EL8 Linux 系统上进行了相当多的网络设置调试后,我发现安全 SFTP 传输的瓶颈实际上是 CPU。
奇怪的是,scp 和 sftp(其他 sftp 客户端,例如 FileZilla)之间存在不同的传输速度限制:
scp: 32MB/s
sftp: 6MB/s
FileZilla: 6MB/s
在这三次情况下,服务器端 proftpd 进程的 CPU 使用率都会增加到约 100%。
为什么 scp 的传输速度比 sftp 的传输速度高得多(使用相同的密码)?
答案1
文章 托管文件传输 用以下方式解释速度差异:
在速度方面(即在传输文件方面)比较 SCP 与 SFTP 时,SCP 通常要快得多。这是由于它确认收到的数据包的方式。传统上,SFTP 必须确认(确认)每个小数据包,而 SCP 则不需要。这就是为什么这种差异在高延迟网络中变得更加明显的原因。
答案2
错误修正a00850bProFTPD 避免了昂贵的内存复制并解决了这个问题。更新到 1.3.9 版本后,速度上升到了预期水平。