在 CentOS 上优化 FTP Server(如 vsftpd / proftpd) 的性能,通常从系统层、网络层、FTP 服务配置层三方面入手。下面以 vsftpd(CentOS 默认最常见) 为主进行说明,同时补充通用优化建议。
编辑 /etc/sysctl.conf:
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
应用:
sysctl -p
FTP 并发连接多时需提高限制。
/etc/security/limits.conf:
* soft nofile 65535
* hard nofile 65535
FTP 服务用户(如 ftp):
ftp soft nofile 65535
ftp hard nofile 65535
noatime,nodiratime
配置文件:/etc/vsftpd/vsftpd.conf
max_clients=5000
max_per_ip=50
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=公网IP
被动端口范围不要太大,避免端口耗尽
anonymous_enable=NO
ls_recurse_enable=NO
ascii_upload_enable=NO
ascii_download_enable=NO
use_localtime=YES
write_enable=YES
local_umask=022
listen=YES
listen_ipv6=NO
ssl_enable=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
示例(lftp):
lftp -e "pget -n 10 largefile.iso; quit" ftp://user:pass@host
firewall-cmd --add-port=21/tcp --permanent
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
setsebool -P ftpd_full_access on
ss -ant | grep :21 | wc -l
ftpbenchlftp 多连接iperf(网络层)如果 FTP 性能瓶颈明显:
✅ 调整内核参数
✅ 提高文件描述符
✅ vsftpd 并发 + PASV 端口
✅ 关闭匿名 & ASCII
✅ 防火墙放行 PASV
✅ 使用多线程客户端
如果你是 proftpd / pure-ftpd,或需要 高并发 / 大文件 / 内网场景,可以告诉我具体使用场景,我可以给更针对性的配置。