FTP的限制连接数

FTP连接数限制问题

问题描述:因业务增长,所需要的FTP并发量增加,导致客户端连接FTP server时出现报错

Troubleshooting

1>报错内容:单个IP连接过多。

2>限制客户端连接数的参数:

max_clients  #最大客户端连接数,默认没有限制

max_per_ip  #单个IP最大连接限制,默认没有限制

 

3>查找限制

查看ftp配置文件/etc/vsftpd.conf,查看参数限制的值

可是在配置文件并没有max_clients和max_per_ip参数,那么默认就是没有限制的,为什么还会有报错?

4>是否还有其他限制

Vsftpd分两种运行模式:

1:standalone模式

2:xinetd模式

上图,这两个参数仅在standalone运行模式生效

 

查看运行模式:

chkconfig –A|grep vsftpd

vsftpd      xinetd

此服务器上ftp运行的xinetd模式,在xinetd模式下,限制连接数的配置文件是/etc/xinetd.conf

限制的参数是instances和cps

instances  #接受一个大于或等于1的整数或UNLIMITED,设置可以同时运行的最大进程数,UNLIMITED意味着xinetd的该数没有限制

cps       #用来设定连接速率,它需要两个参数,第一个参数表示每秒可以处理的连接数,如果超过了这个连接数时,之后进入的连接数将会被暂停处理,第二个参数表示停止处理多少秒后,继续处理先去暂停处理的连接。

 

这里可以修改instances和cps的值或者直接改为没有限制UNLIMITED但是,ftp高并发量的业务来看,最好的方法是直接将ftp改为standalone运行模式并根据业务来调整限制值或者取消这两个参数使其不受限制。

Standalone适用于高并发环境,xinetd适用于小并发的环境。

 

 

 

这个报错一般是超过单个IP连接数量限制

 

这个报错一般是超过客户端连接数量限制

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FTP服务器配置 VSFTP主配置文件路径:/etc/vsftpd/vsftpd.conf,重要参数: anonymous_enable=yes/no 是否允许匿名用户访问 anon_upload_enable=yes/no 是否允许匿名用户上传文件 anon_mkdir_write_enable=yes/no 是否允许匿名用户创建目录 anon_other_write_enable=yes/no 匿名用户和虚拟用户是否拥有删除权限 local_enable=yes/no 是否允许本地用户登陆 write_enable=yes/no 设置全局是否可写 anon_root=/var 指定匿名用户目录 chroot_local_user=yes 锁定所有用户到用户主目录 chroot_list_enable=yes/no 锁定列表中的用户到主目录,需要配合下一参数使用 chroot_list_file=/etc/vsftpd/chroot_list 指定存储被锁定用户的列表文件位置 chown_uploads=yes/no 匿名用户上传所有者指定功能,需要与下一参数配合使用 chown_username=用户名 指定匿名用户上传文件的所有者 max_clients=300 最大客户端连接数为300 anon_max_rate=30000 匿名用户和虚拟用户限速为30K/S local_max_rate=30000 本地用户限速为30K/S max_per_ip=10 每个IP最大连接数 listen_port=22 更改监听端口 实现如下要求:允许匿名用户登陆,匿名用户限速为60K/S,只允许下载。监听端口为22,最大连接数为10。新建用户ftp1,限速为200K/S,允许上传下载删除新建文件夹。进入目录/etc/vsftpd,用vi编辑器打开vsftpd.conf主配置文件: 直接添加以下选项: [root@LidadeFedora vsftpd]# service vsftpd restart 添加用户ftp1,设置登录脚本为 /sbin/nologin: vsftp默认目录为:/var/ftp,为方便测试,在/var/ftp下新建一个文件"testLocal",在"/var/ftp/pub"新建一个文件"testAnon"。 由于使用root用户新建文件,文件的所有者为root,所以需要把文件的权限设置为644其他用户才能读取该文件 设置/var/ftp/pub权限为777,表示所有用户均有读写权限. 由于端口22被ssh服务器占用,所以需要关闭ssh服务并重启vsftp服务。 客户端用Flashfxp测试:新建站点"VsftpTest",输入Vsftp服务器的IP地址,端口填22,用户名填ftp1,密码填你设置的密码,然后点击"连接"按钮: 由于没有使用选项:local_root,登陆本地用户时自动跳转到该用户的主目录.没有使用chroot_local_user=yes,所以本地用户可以浏览整个文件系统中他有权限读取的文件和文件夹: 切换到目录"/var/ftp/pub",该目录的权限为777,上传一个10M以上的文件,测试ftp1的上传速度: 新建文件夹和删除权限测试省略。下面测试匿名用户权限:勾选"匿名"选项并连接: 匿名用户登陆成功: 进入pub目录,尝试删除testAnon文件失败,说明这里是配置文件中的anon_other_write_enable=no生效了。最终权限等于配置文件中的权限和linux文件系统权限相或的结果。比如vsftp配置文件中允许匿名用户下载,但光这样是不够的,还需要被下载的文件或文件夹的能够被其他用户读取。 尝试上传文件失败,符合匿名用户只允许下载的要求: 最后测试匿名用户的下载速度: vsftp的配置
经过几天的琢磨,去看了csdn上一位大牛的数据库的连接池实现方案,从中感悟很多,感谢这位大神。 让我才能有信心去坚持下去。也不知道写的好不好··不好的话,大家指出。但是我是努力去做了,这一个过程,很享受,大家互相学习吧~ 其实ftp连接池跟数据库连接池的原理是差不多的,不同的是ftp连接池有个连接时间的限制,如果你没设置的话,它的默认连接服务器的时间是0,所以我们要合理的设置它的服务器的时间,ftp.setConnectTimeout(5000);在这里设置了它的时间是5s。 写ftp连接池的目的就是合理的利用资源,本文的目的是在初始的时候,创建10个Ftp连接,放到一个队列中去,当多个用户同时去下载ftp上的文件的时候,就会从队列中取,若当前的队列中存在着空闲的连接,就获取该ftp的连接,并设置此连接为忙的状态,否则就在创建新的连接到连接池中去(有最大的连接池数的限制,不能超过这个连接数,超过的话,就会进入等待状态,直到其它连接释放连接),在执行下载操作的前对登录ftp时间进行判断。看是否超时,超时的话,就重新连接到ftp服务器,在这里我所做的操作就是,在开始创建ftp连接池的时候,记录下系统的当前时间,例如为:long beginTime=System.currentTimeMillis(),在取文件之前获得 当前系统的时间 long endTime=System.currentTimeMillis(),此时我们就可以获得系统登录ftp的时间time=endTime-beginTime,在此我们可以用time与ftp最大登录服务器时间(ftpPool.getConnection();)进行比较。 当然了,在操作完之后我们需要将所操作的连接池中的ftp设置为空闲状态。代码在文件中,为了测试,我本地自己创建了一个ftp服务器,创建ftp的方法,大家可以到网上查资料,我用的是Serv-U工具。傻瓜式的。所用到的jar包是commons-net2.0.
这个程序是利用前些日子写的HFS程序写成的。所以,界面看起来差不多。但是,这个程序除了保留对.NET 3.5网站的支持以外还加入了FTP服务的支持,而且在程序中添加了随机启动和自动运行两个选项。这样用户就可以很方便的快速架设起FTP服务器与HTTP服务器。不过要注意一点,这个软件虽然可以绕过系统服务独立提供HTTP协议、FTP协议支持,但是,避不开操作系统对于连接数限制。也就是说如果在类似于WindowsXP这样的个人操作系统上使用这个软件,在使用前最好先修改一下系统对于连接数限制,一般微软的个人版操作系统对于连接数都有所限制(WindowsXP限制到10个连接左右),如果不修改这些限制,那么同时连接的用户数量很可能会因为,操作系统自身对于连接数限制而受到影响。(本软件支持HTML网页与.NET 3.5或3.5以下的ASPX网站。另外,本程序需要.NET 3.5环境支持) 更新(2013-12-02) 1、修改了软件布局 2、修正了FTP服务程序的字符集,目前提供了“UTF-8”、“GB18030”两种字符集供用户选择,以便适应不同的FTP客户端。(一般情况Windows下的FTP客户端默认支持“GB18030”,Linux、Uinx下的FTP客户端默认支持“UTF-8”。) 注意:如果是以前的用户在升级这个版本时,除了卸载旧有程序以外,还需要删除原有配置文件(配置文件一般在安装目录下,名为“config.xml”)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值