1. 配置文件基础优化
编辑/etc/vsftpd.conf,调整以下核心参数以提升连接效率:
pasv_enable=YES
pasv_min_port=30000 # 起始端口(建议≥1024)
pasv_max_port=31000 # 结束端口(≤65535)
pasv_address=your_public_ip # NAT环境下需设置为服务器公网IP
max_clients=200 # 最大并发客户端数(如服务器内存4GB,可设为200)
max_per_ip=4 # 单IP最大并发连接数(防止单IP滥用)
idle_session_timeout=300 # 空闲会话超时(秒,默认300,可适当延长)
data_connection_timeout=300 # 数据连接超时(秒,默认300,可适当延长)
reverse_lookup_enable=NO
compress=YES
2. 系统内核参数调优
编辑/etc/sysctl.conf,优化网络与文件系统性能:
net.ipv4.tcp_tw_reuse=1 # 允许复用TIME_WAIT状态的连接
net.ipv4.tcp_fin_timeout=30 # TIME_WAIT状态超时(秒,默认60,可缩短)
net.core.somaxconn=65535 # 监听队列最大长度(默认128,需与vsftpd的listen_backlog一致)
net.ipv4.tcp_max_syn_backlog=65535 # SYN队列最大长度(防SYN Flood)
fs.file-max=2097152 # 系统最大文件描述符数(默认约1024,需大幅增加)
vm.swappiness=5 # 交换分区使用率(默认60,设为5减少磁盘交换)
vm.dirty_ratio=10 # 脏页比例(默认20,设为10提前写入磁盘)
vm.dirty_background_ratio=5 # 后台脏页刷新比例(默认10,设为5更及时)
应用更改:sudo sysctl -p。
3. 系统资源限制调整
编辑/etc/security/limits.conf,提升用户进程资源上限:
* soft nofile 65535 # 普通用户最大文件描述符数(软限制)
* hard nofile 65535 # 普通用户最大文件描述符数(硬限制)
root soft nofile 65535 # root用户最大文件描述符数(软限制)
root hard nofile 65535 # root用户最大文件描述符数(硬限制)
编辑/etc/pam.d/common-session和/etc/pam.d/common-session-noninteractive,添加以下行以使限制生效:
session required pam_limits.so
4. 网络与防火墙配置
ufw(Ubuntu防火墙)允许FTP控制连接(21端口)和数据连接(被动模式端口范围)。sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp # 与vsftpd.conf中的pasv_min_port/pasv_max_port一致
sudo ufw reload
icmp_echo_ignore_all(防ping),否则可能导致被动模式连接失败。5. 高级性能优化
anonymous_enable=NO # 禁用匿名访问(提升安全性,减少资源占用)
chroot_local_user=YES # 将用户锁定在主目录(增强安全性,避免遍历整个文件系统)
allow_writeable_chroot=YES # 允许用户写入主目录(若chroot_local_user=YES,需开启)
local_umask=022 # 设置文件权限掩码(避免文件权限过高导致无法访问)
data_connection_buffer_size=102400
use_sendfile=NO
6. 监控与调优工具
ss命令查看FTP连接数及端口占用。ss -antp | grep ftp
iostat查看磁盘吞吐量与延迟(需安装sysstat包)。iostat -xmt 1
iftop查看实时带宽占用(需安装iftop包)。sudo iftop -i eth0
/var/log/vsftpd.log(或自定义日志路径),定位连接超时、拒绝等问题。注意事项
/etc/vsftpd.conf)。sudo systemctl restart vsftpd。pasv_address为服务器公网IP,否则客户端无法连接被动模式端口。