在 Ubuntu 上优化 FTP 服务器(常见为 vsftpd、ProFTPD 或 Pure-FTPd)的传输速度,需要从网络、系统、FTP 服务配置、文件系统多方面入手。下面以最常见的 vsftpd 为主,兼谈通用优化。
被动模式(PASV)对防火墙和 NAT 更友好。
vsftpd 示例:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
并在防火墙中放行:
ufw allow 21/tcp
ufw allow 40000:50000/tcp
若服务器在 NAT 后,还需:
pasv_address=你的公网IP
编辑 /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_congestion_control = bbr
应用:
sysctl -p
BBR 对高延迟/大带宽网络效果明显(需内核 ≥ 4.9)
max_clients=200
max_per_ip=10
connect_from_port_20=YES
anonymous_enable=NO
ls_recurse_enable=NO
ascii_upload_enable=NO
ascii_download_enable=NO
避免虚拟用户带来的额外开销(除非必须)。
/dev/sdb1 /ftp xfs defaults,noatime,nodiratime 0 0
binary
lftp 示例:
lftp -e "set pget:default-n 10; pget file.iso" ftp://user@host
# 看带宽是否打满
iftop
# 看磁盘瓶颈
iostat -x 1
# 看连接状态
ss -tanp | grep ftp
TimeoutIdle、MaxInstances-C 限制单 IP,-k 限制负载如果你愿意,可以告诉我:
我可以直接给你针对性配置模板。