421错误原因:

同时连接该ftp的人数过多,一般ftp网站都有同时登陆人数的上限,超过该上限就会出现421错误。

分析:

  1. 连接超时或者数据传输超时
  2. 主动被动模式选择不符合网络环境
  3. FtpService服务器的线程数量配置

基础知识:

FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口)。通常21端口是命令端口,20端口是数据端口。当混入主动/被动模式的概念时,数据端口就有可能不是20了。

解决方案:

1. 连接超时或者数据传输超时

ftpClient.setDataTimeout(60000);       //设置传输超时时间为60秒
ftpClient.setConnectTimeout(60000);       //连接超时为60秒

2. 主动被动模式选择不符合网络环境

主动模式
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 <- 服务器 20端口
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。

被动模式:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 -> 服务器 >1023端口
被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

折中方式
既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。

服务端是两种模式的,使用哪种模式取决于客户端,同时关键点在于网络环境适合用哪种模式,比如客户端在防火墙内,则最好选择被动模式
ftpClient.enterLocalActiveMode()便是配置成主动模式
ftpClient.enterLocalPassiveMode()则配置成被动模式。

FTP主动模式和被动模式的区别参考:https://www.cnblogs.com/ajianbeyourself/p/7655464.html

3. FtpService服务器的线程数量配置

在res\conf目录中找到ftpd-typical.xml文件,添加最大登录数等配置

<server xmlns="http://mina.apache.org/ftpserver/spring/v1"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd"id="myServer"        /*设置server的标志符,必须*/max-logins="5"       /*设置同时登陆的最大人数*/anon-enabled="false" /*设置匿名登陆为不允许*/max-anon-logins="0"  /*设置匿名登陆用户为0个*/max-login-failures="3"  /*设置3次失败登陆后,关闭此链接*//*设置失败登陆后下一次登陆所需的时间间隔,防止暴力破解,单位是微秒*/login-failure-delay="30000"><listeners><!--设置默认的链接端口为2121,必须--><nio-listener name="default" port="2121"><ssl><!--设置密钥存储路径和密钥存储密码,必须--><keystore file="./res/ftpserver.jks" password="password" /></ssl><!--设置多少时间后关闭一个闲置的链接,单位是秒--><data-connection idle-timeout="60"><!--设置主动链接配置,端口号“1886”--><active local-port="1886"/><!--设置被动链接配置,端口设置为“1886”,扩展地址为“137.222.18.114”,当需要访问的服务器返回外网地址时使用--><passive ports="1886" address="0.0.0.0" external-address="137.222.18.114"/></data-connection></nio-listener></listeners><!--设置用户登陆信息,“./res/conf/users.properties”为文件路径,“encrypt-passwords=‘clear’”设置密码加密方式,默认是“MD5”,设置成“clear”表示不加密,直接输入--><file-user-manager file="./res/conf/users.properties" encrypt-passwords="clear"/>
</server>

Server元素详解

最大线程数max-threads这个提高了应该提高处理客户端连接的速度。
ftpd-typical.xml配置可参考官网:http://mina.apache.org/ftpserver-project/configuration_listeners.html
或者中文文档https://wenku.baidu.com/view/5f0ab75f312b3169a451a4d8.html

apache FtpService 报错421相关推荐

  1. apache 编译报错:undefined reference to `apr_array_clear'

    apache 编译报错: modules/http/.libs/libmod_http.a(byterange_filter.o): In function `ap_set_byterange': b ...

  2. apache启动报错记录

    [root@localhost apache2]# ./bin/apachectl start httpd: Syntax error on line 53 of /usr/local/apache2 ...

  3. 配置PHP启动Apache服务报错

    为什么80%的码农都做不了架构师?>>>    在新的服务器(centos 6.3)编译安装完php-5.4.8,再配置好php.ini和httpd.conf后,启动apache-2 ...

  4. Apache服务器报错信息,端口号等原因

    error.message 1 原因:windows端口转发,将本地8080端口监听到虚拟机的80端口 报错信息: Apache [Mon Sep 09 15:31:13.700225 2019] [ ...

  5. 报错Failure to find org.apache或 报错 The container 'Maven Dependencies' references non existing

    Maven 本地仓库明明有jar包(或nexus私库中明明有jar包),pom文件还是报错解决办法 一般报错:"Failure to find org.apache.maven.plugin ...

  6. Apache添加PHP模块重启apache服务报错

    根据网上教程,在Apache中添加php模块: LoadModule php7_module C:\Program Files\php\php-7.3.4-Win32-VC15-x64\php7apa ...

  7. Apache Knox报错大全

    knox错误总结 windows browser 有时候打不开Knox UI hosts文件添加 Knox 的{{GATE_WAY}}ip的映射 就可以打开界面了 打开Knox admin_UI后显示 ...

  8. php安装完后 apache the requested has,Apache启动报错:the requested operation has failed

    1.80端口被占用: Windows System进程 pid=4 占用 80端口 安装Apache,不能安装成服务,提示端口已经被占用. 在命令窗口输入 netstat -ano | findstr ...

  9. Apache启动报错:Apache is running a threaded MPM

    解决:Apache is running a threaded MPM,but your PHP Modle is not compiled to be threadsafe. You need to ...

最新文章

  1. 表格全屏显示_2020-2026年中国手机显示屏市场现状研究分析与发展前景预测报告...
  2. 自然语言处理NLP常用开源/免费工具
  3. Linux vim光标快速移动指定行数G
  4. pythorch基本信息查询
  5. 监视程序中的死锁及其他
  6. vba里面的日期数据转换异常(Format error)(使用IsDate方法部分解决)
  7. hbase可视化工具_做数据可视化,三大热门BI工具试用总结
  8. H.264的三种开源编码器比较
  9. 玩转Eclipse1--基本知识与配置
  10. 第一天,搬家到博客园
  11. mysql handbook_MySQL 8 Administrator’s Guide
  12. jna调取第三方dll实战(罗技G29)
  13. 【OpenGrok代码搜索引擎】二、Windows10下基于Linux子系统搭建Opengrok代码搜索引擎
  14. 工作5年,从年薪10W到年薪100W:会赚钱的人,都懂规划
  15. 【eCPRI】(1)基本概念
  16. Rook下快速部署ceph分布式文件系统
  17. ApowerMirror PJ教程
  18. 第一部分 思科九年 一(20)
  19. 记一次k8s的pod间网络无法访问解决
  20. 数据库导入语句linux,数据库应用-SQL语句导入导出大全

热门文章

  1. 【ChatGPT】Window便签工具推荐几款,不用详细介绍
  2. 专题分纲目录 高效记忆/形象记忆
  3. matlab程序 地震 相干噪声_SAR滤波MATLAB程序
  4. 小米手机、红米手机、小米Pad屏幕四周不停闪烁的解决办法,亲测成功!
  5. 华为C8813Q刷机包 基于乐蛙OS5 优化内核 提升性能 稳定流畅
  6. iPhone6、iPad Pro惯性传感器性能对比
  7. 【历史上的今天】12 月 9 日:微软推出 Windows 2.0;五十年前的极客科技展;第一个获得专利的人
  8. 2022.05.05周五
  9. 流程图制作用什么软件?这些软件值得你尝试一下
  10. Linux Socket 编程--- WebSocket