故障描述
客户反映,说内网FTP传输异常缓慢(并发量大的话,上传速度只有几十KB,少的话上传速度还可以)。
服务器情况:客户有2台服务器,分别为A 主机和B主机
A主机 :VSFTP服务器
B主机:通过代码调用FTP程序,自动上传一些附件文件(静态页面,pdf)等至A主机
排查处理过程
- 1、 第一反应内网上传速度理论应该非常快的快的,不至于很慢。登录A,B主机检查主机负载和CPU,磁盘IO是否异常,排查过后一切正常
- 2、因为B主机是通过程序调用FTP命令,进行上传附件的,怀疑是不是程序模块有问题。所以打算手动在B主机部署安装一个ftp客户端命令.手动测试上传速度
yum -y install ftp
ftp 主机A 10021
执行上述命令后,直接执行“dir”命令无法正常显示.但是执行telnet 端口是正常的。
- 3、登录A主机,检查vsftpd配置文件发现,在pasv模式,端口只有10个。
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10010
判断应该是端口不够用造成的。立即将pasvmaxport修改为12010。
- 4、重启动 vsftp服务(/etc/init.d/vsftpd restart)
- 5、在B主机重新执行FTP远程连接命令,发现执行命令“dir”命令依旧无法正常显示远端目录
- 6、重新登录A主机检查防火墙是否做了限制,果然发现防火墙的运行的端口只有10000~10010的10个端口,调整防护墙端口为12010。
iptables -I INPUT -p tcp -m tcp --dport 10000:12010 -j ACCEPT
- 7、在远端执行:ftp命令,并上传一个文件,一切正常
执行上传命令,一切OK。
个人总结
- 第一点检查网络和主机性能是否正常
- 第二点检查VSFTP服务配置和防火墙
- 第三点调整对应配置文件。