在 CentOS 上 SFTP 传输速度慢,原因通常不在 SFTP 本身,而在网络、磁盘、加密、配置或系统参数。下面按常见原因 → 排查方法 → 解决建议给你梳理。
排查
ping 目标IP
mtr 目标IP
iperf3 -c 服务器IP
解决
MTU 不匹配会导致大量重传
排查
ping -s 1472 -M do 目标IP
解决
ip link set eth0 mtu 1400
SFTP 基于 SSH,加密会消耗 CPU
常见慢算法
aes256-gcmchacha20-poly1305(某些老 CPU)排查
top
# 看 sshd 是否占 CPU 很高
解决
修改 /etc/ssh/sshd_config
Ciphers aes128-gcm@openssh.com,aes128-ctr
重启:
systemctl restart sshd
Subsystem sftp internal-sftp
如果客户端使用 -C,在高速网络下会更慢
解决
Compression no
尤其是:
排查
iostat -x 1
iotop
解决
SFTP 默认单连接串行传输
解决
lftp / rsync 并行rsync -avzP file user@host:/path
或
lftp sftp://user@host -e "mirror -P 10 /local /remote"
优化内核参数
cat >> /etc/sysctl.conf <<EOF
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_window_scaling = 1
EOF
sysctl -p
不是传输慢,而是连接慢
解决
UseDNS no
GSSAPIAuthentication no
在极端情况下影响 IO
排查
getenforce
top → sshd 是否吃 CPUiostat → 磁盘是否 100%iperf3 → 网络是否达标| 场景 | 推荐 |
|---|---|
| 大文件 | rsync |
| 大量小文件 | tar + sftp |
| 并行 | lftp |
| 极速 | 内网 scp / nc |
如果你愿意,可以告诉我:
top / iostat 截图或输出我可以直接帮你判断是 网络 / CPU / 磁盘 哪一类问题。