在 Linux 下使用 vsftpd(Very Secure FTP Daemon) 时,如果感觉传输速度慢,可以从配置优化、系统参数、网络与硬件、客户端方式几个方面来提速。下面按实用程度给你一份“提速清单”。
编辑配置文件(通常是 /etc/vsftpd/vsftpd.conf 或 /etc/vsftpd.conf):
# 关闭 DNS 反向解析(非常关键)
reverse_lookup_enable=NO
# 关闭匿名和多余日志
anonymous_enable=NO
xferlog_enable=NO
max_clients=0
max_per_ip=0
connect_from_port_20=YES
data_connection_timeout=300
idle_session_timeout=300
local_enable=YES
write_enable=YES
被动模式对防火墙和 NAT 更友好:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
然后在防火墙放行该端口段。
编辑 /etc/sysctl.conf:
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
net.ipv4.tcp_timestamps = 0
执行:
sysctl -p
setenforce 0
# 永久关闭修改 /etc/selinux/config
vsftpd 本身不慢,慢往往是磁盘 IO:
ext4xfs(大文件更好)ftp> binary
如果 vsftpd 仍不满足:
proftpd(配置灵活)sftp(基于 SSH,稳定但略慢)rsync(增量同步最快)nginx + http/https(大文件下载极快)# 看是否是磁盘瓶颈
iostat -x 1
# 看网络
iftop
iptraf-ng
# 看 vsftpd 负载
ps aux | grep vsftpd
如果你愿意,可以告诉我:
vsftpd.conf 内容我可以帮你做精准调优。