[FTP]
为什么会这样?TIME_WAIT有问题~~
我开了个FTP下载服务器,用VSFTPD做下载~~
我限制了每个IP只有一个连接~,但用户大多用多线程工具下载,一个IP有很多的连接。我做过如下的测试:
我开一个端口,限制单线程,然后我用快车开10线程下载,虽然有九个线程连接不上~~但是我在服务器端用netstat -n | grep TIME_WAIT | grep :83 | wc -l查看时,得到的结果竟然是100多!!(而我只开一个线程的话,得到的结果就会是0)
在我的服务器高峰时,我查看到TIME_WAIT的状态竟然有16000多个!!当时我就差点晕了过去!
这会是什么原因造成的呢?是因为VSFTPD对TCP状态处理不当?还是因为系统内核对TCP的处理有误?
我应该会什么解决方法呢?
我现在想到的解决方法就是:
修改VSFTPD的源代码,增加一个设置变量~~,如果某个IP的连接失败次数多于这个数值,我就用IPTABLES封掉他的IP,同时用MYSQL禁止他的用户名(我是用MYSQL认证的),这样做,我不知道是我可耻呢还是那些使用多线程下载的用户可耻呢?
请大家给点意见,不然我的服务器早晚会被用户拖死去了~~