在 Ubuntu 上遇到 SFTP 传输速度慢,可以从 网络、SSH 配置、磁盘、客户端方式 几个方面排查和优化。下面按常见原因给你一套实用方案。
iperf3 -c 服务器IP
或简单测试:
scp 大文件 用户@IP:/tmp/
如果 scp 也慢,说明不是 SFTP 客户端问题。
在服务器上:
dd if=/dev/zero of=/tmp/test bs=1M count=500 oflag=direct
如果写速很低,是磁盘问题。
编辑:
sudo vim /etc/ssh/sshd_config
添加或修改:
# 提高吞吐量
TCPKeepAlive yes
ClientAliveInterval 30
# 禁用不必要的特性
Compression no
# 使用更快的加密算法(Ubuntu 20.04+ 支持)
Ciphers chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com
重启 SSH:
sudo systemctl restart ssh
sftp -o Ciphers=chacha20-poly1305@openssh.com user@ip
或使用 scp:
scp -c chacha20-poly1305@openssh.com file user@ip:/path
SFTP 对小文件特别慢:
tar czf - dir | ssh user@ip "cd /path && tar xzf -"
sudo sysctl -w net.ipv4.tcp_window_scaling=1
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
写入持久化:
sudo vim /etc/sysctl.conf
rsync -avzP file user@ip:/path
支持断点续传、增量同步。
| 问题 | 解决 |
|---|---|
| 小文件特别慢 | 用 tar 打包 |
| 加密慢 | 换 chacha20 |
| 云服务器跨区 | 用内网/IPv6 |
| 磁盘 IO 差 | 换盘或限速业务 |
如果你愿意,可以告诉我:
我可以给你更精准的优化方案。