Error-NioEndpoint-打开文件过多

1. 场景:

使用javacv将rtsp流转为flv,服务跑几天后报错。
在这里插入图片描述

2022-01-20 09:32:41.214 [http-nio-9145-Acceptor-0] ERROR org.apache.tomcat.util.net.NioEndpoint - Socket accept failed
java.io.IOException: 打开的文件过多
        at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) ~[?:1.8.0_11]
        at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:241) ~[?:1.8.0_11]
        at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:482) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_11]

2.定位问题:

  • 先查出服务进程
ps -ef |grep converter-flv-2.0.5.RELEASE.jar

在这里插入图片描述

  • 使用命令lsof查出当前服务打开文件数
    在这里插入图片描述
 lsof -p 2194 |wc -l

如果找不到命令则安装:yum install lsof

  • 查看用户允许打开的最大文件数
    在这里插入图片描述

ulimit -a 发现open files 为1024

往往服务打开的文件数大于该值就会报错。

3. 解决方案

执行:ulimit -n 4096
将open files (-n) 1024 设置成open files (-n) 4096


版权声明:本文为qq_41460198原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。