温馨提示×

linux sftp传输慢原因

小樊
37
2026-09-20 07:07:10
栏目: 智能运维

Linux 下 SFTP 传输慢 的原因通常可以归为以下几类,按出现频率从高到低说明,并给出对应排查/优化思路。


一、网络相关(最常见)

1. 带宽不足或网络拥塞

  • 公网 / 跨地域链路本身带宽小
  • 与其他业务抢占带宽

排查

ping 目标IP
mtr 目标IP
iperf3 -c 目标IP

优化

  • 避免高峰期传输
  • 使用限速更合理的链路

2. 高延迟 / 丢包

SFTP 基于 TCP + SSH,高 RTT 会严重限制单连接吞吐

现象

  • ping 延迟 > 50ms 明显变慢
  • 丢包导致重传

优化

  • 使用更快链路
  • 增大 TCP 窗口(见下文)

二、SSH / SFTP 配置问题

3. 使用了慢的加密算法

默认可能使用较安全的算法,但性能差

查看当前算法

sftp -v user@host

优化(客户端)

sftp -o Ciphers=aes128-gcm@openssh.com \
     -o MACs=umac-64@openssh.com user@host

服务端 /etc/ssh/sshd_config

Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com

4. SFTP 是单线程、单连接

  • 不支持多线程
  • 小文件极慢(大量握手)

优化

  • 打包后传:
tar czf - dir | ssh user@host "tar xzf -"
  • 或使用 rsync
rsync -avzP dir/ user@host:/path/

三、磁盘 IO 瓶颈

5. 磁盘读写慢

  • HDD vs SSD
  • 目标目录在慢存储(NFS、云盘)

排查

iostat -x 1
iotop

优化

  • 避免写入 NFS
  • 使用本地 SSD 中转

四、系统 / 内核参数问题

6. TCP 窗口太小(高延迟网络)

临时调整

sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216

五、文件特性问题

7. 大量小文件

SFTP 每个文件都有开销

优化

  • 先 tar 再传
  • 或用 rsync

8. 文件已存在 / 覆盖校验

某些客户端会做校验,拖慢速度


六、其他少见原因

  • SELinux / 审计系统影响
  • 防火墙 DPI 限速
  • 虚拟化层限速(云厂商)
  • DNS 解析慢(禁用 UseDNS)
# /etc/ssh/sshd_config
UseDNS no

推荐最佳实践(总结)

✅ 大文件 / 批量:

rsync -avzP

✅ 极慢网络:

tar cz | ssh

✅ 调优:

  • 改加密算法
  • 开 TCP 窗口
  • 关 UseDNS

如果你愿意,可以告诉我:

  • 内网还是公网
  • 单文件还是大量小文件
  • 实测速度(MB/s)
  • 网络延迟

我可以直接帮你给出最优方案

0