在 CentOS 上搭建的 FTP 服务器(ftpserver)上传慢,通常不是单一原因,而是网络、服务配置、磁盘或安全策略叠加导致的。下面从最常见到较少见逐一分析,并给出排查和解决办法。
一、网络层面(最常见)
1. 被动模式(PASV)端口未正确开放
现象:登录正常,但上传卡住或极慢
原因:
- FTP 使用 PASV 模式
- 防火墙只开了 21 端口,未开 PASV 端口范围
解决(vsftpd 示例):
# vsftpd.conf
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙:
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
2. MTU / 网络链路问题
现象:大文件特别慢,小文件正常
排查:
ping -s 1472 ftp_server_ip
如果丢包或超时,可能是 MTU 问题。
解决:
ip link set eth0 mtu 1400
二、FTP 服务配置问题
3. vsftpd 限速配置
现象:限速明显(如 100KB/s)
检查:
grep -E "anon_max_rate|local_max_rate" /etc/vsftpd/vsftpd.conf
如果有:
local_max_rate=102400
说明被限速了,去掉或调大。
4. 开启了 ASCII 模式传输
现象:文本文件慢,二进制正常
解决:
ascii_upload_enable=NO
ascii_download_enable=NO
三、磁盘与系统性能
5. 磁盘 IO 瓶颈
排查:
iostat -x 1
或
top
看 %wa 是否很高。
解决:
- 换更快的磁盘
- 避免上传到 NFS / 网络盘
6. SELinux 影响(CentOS 特有)
现象:上传失败或极慢
检查:
getsebool -a | grep ftp
常见修复:
setsebool -P ftpd_full_access on
四、安全与监控软件
7. 防火墙 / 安全软件扫描
- firewalld
- SELinux
- 第三方杀毒(如 clamav)
上传时扫描文件会导致极慢。
五、客户端问题(容易被忽略)
- Windows 资源管理器 FTP:很慢
- FileZilla:稳定
- 使用
lftp测试:
lftp -u user,pass ftp://ip
put bigfile.iso
六、快速排查顺序(推荐)
- 用
lftp或FileZilla测试 - 看是否 PASV 端口未开
- 检查
vsftpd.conf限速 - 看磁盘 IO
- 检查 SELinux
- 网络 MTU / 丢包
如果你愿意,可以告诉我:
- 使用的 FTP 软件(vsftpd / proftpd)
- CentOS 版本
- 是否云服务器
- 上传速度大概多少
我可以给你针对性配置。