org.apache.tomcat.util.net.NioEndpoint,打开的文件过多

错误信息:

27-Mar-2019 04:20:20.430 严重 [http-nio-8100-Acceptor-0] org.apache.tomcat.util.net.NioEndpoint$Acceptor.run Socket accept failed
 java.io.IOException: 打开的文件过多
    at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
    at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:241)
    at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:443)
    at java.lang.Thread.run(Thread.java:745)

办法一:

<Server port="8002" shutdown="SHUTDOWN" >
    <Service name="Catalina">
        <Connector port="8100" connectionTimeout="20000" redirectPort="8443" acceptCount="1"  protocol="HTTP/1.1" />

修改为:

<Server port="8002" shutdown="SHUTDOWN" >
    <Service name="Catalina">
        <Connector port="8100" connectionTimeout="20000" redirectPort="8443" acceptCount="100" protocol="HTTP/1.1" />

方法二:

增大用户允许打开的句柄数
  1.使用ps -ef |grep tomcat 查看你的进程ID,记录ID号,假设进程ID为13714
  2.使用:lsof -p 13714| wc -l 查看当前进程id为13714的 文件操作状况
    执行该命令出现文件使用情况为 180
  3.使用命令:ulimit -a 查看每个用户允许打开的最大文件数
    发现系统默认的是open files (-n) 1024,问题就出现在这里。
  4.然后执行:ulimit -n 4096
    将open files (-n) 1024 设置成open files (-n) 4096

方法三:

操作系统的中打开文件的最大句柄数受限所致,常常发生在很多个并发用户访问服务器的时候.因为为了执行每个用户的应用服务器都要加载很多文件(new一个socket就需要一个文件句柄),这就会导致打开文件的句柄的缺乏.1.尽量把类打成jar包,因为一个jar包只消耗一个文件句柄,如果不打包,一个类就消耗一个文件句柄.2.java的垃圾回收不能关闭网络连接打开的文件句柄,如果没有执行close()(例如:java.net.Socket.close())则文件句柄将一直存在,而不能被关闭.你也可以考虑设置socket的最大打开数来控制这个问题.3.对操作系统做相关的设置,增加最大文件句柄数量

原文地址:https://www.cnblogs.com/guoguochong/p/10641615.html

时间: 2024-10-06 21:08:23

org.apache.tomcat.util.net.NioEndpoint,打开的文件过多的相关文章

java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager

java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager 问题: 使用Springboot打包为war部署于Tomcat7中报错 java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.get

org.apache.tomcat.util.bcel.classfile.ClassFormatException: null is not a Java .class file

org.apache.tomcat.util.bcel.classfile.ClassFormatException: null is not a Java .class file 在$TOMCAT_HOME/conf/catalina.properties文件 的tomcat.util.scan.DefaultJarScanner.jarsToSkip中添加DB2驱动的Jar包文件名如”db2jcc4.jar” 即可.

Spring Boot常见问题(二)Unable to start embedded container; nested exception is java.lang.NoSuchMethodError: org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;

问题描述:通过Spring Boot官方提供的方式,写出如下HelloWorld代码. @Controller @EnableAutoConfiguration public class HelloWorld { @RequestMapping("/wu") @ResponseBody String home() { return "Hello World!"; } public static void main(String[] args) throws Exce

启动tomcat直接报错:org.apache.tomcat.util.digester.Digester startElement

今天很奇怪,自己手动搭建了一个ssm(spring+springmvc+mybatis)的项目,然后添加到tomcat下,启动直接报错: 2017-3-19 9:24:47 org.apache.tomcat.util.digester.Digester startElement严重: Begin event threw errorjava.lang.ExceptionInInitializerError at sun.reflect.NativeConstructorAccessorImpl.

org.apache.tomcat.util.bcel.classfile.ClassFormatException: It is not a Java .class file

Tomcat启动时输出以下错误: 24-May-2015 14:47:07.441 SEVERE [localhost-startStop-1] org.apache.catalina.startup.ContextConfig.processAnnotationsJar Unable to process Jar entry [com/auth/spring/listener/SpringLoaderListener.class] from Jar [jar:file:/opt/apache-

org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version string [4.0]

错误: 在 IDEA 创建WEB项目之后,打印出的日志中总是出现一行警告信息: 12-May-2018 15:52:30.692 警告 [RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version string [4.0].Default version will be used. 原因: 当前Tomcat8.5不支持Web4.0版本,那要么降低W

记录一次tomcat问题排查记录:org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

最近项目升级jdk,从jdk7 升级到 jdk8,本地已经自测完成了,需要部署到测试环境,测试环境已经装好 jdk8 了,但是tomcat 的版本还是 7.不过,据我之前了解,tomcat7是可以运行JDK8编译的web工程的,只要tomcat的运行环境的JDK是1.8即可.但是不能有比JDK1.8还要新的特性.所以最终决定不升级 tomcat 版本. 等我把项目部署到 测试环境 tomcat 下后,项目是可以跑起来的且能正常运行,但是在项目启动过程中,报了一堆错: SEVERE: Unable

java.net.SocketException: 打开的文件过多

大多数原因是因为程序没有关闭打开的资源连接, 如RMI.数据库等连接才导致的. 当然也有可能能同时有超过Linux本身默认的文件打开数. 一. 先从Linux设置入手 (1) ulimit -a (查看资源设置情况) core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signal

Tomcat 部署 The APR based Apache Tomcat Native ...

Tomcat启动时提示org.apache.catalina.core.AprLifecycleListener- ApacheTomcatJavaJNIIE 网上针对此问题提供的文章很多,但多数和我遇到的情况有出入,所以我将其记录于此 最近开发中需要使用Tomcat,随意找来个较新的版本6.0.20就用.发现启动时提示: "2010-5-12 18:06:06 org.apache.catalina.core.AprLifecycleListener init 信息: The APR base