java报:java.io.ioexception:toomanyopenfiles,导致服务器oom,内存溢出的bug

请叫我大师兄_ 请叫我大师兄_     2022-12-26     484

关键词:

首先,看服务器日志,主要就是一句话:

java.io.IOException: Too many open files

完整的如下:

Jul 03, 2019 1:42:28 PM io.netty.channel.DefaultChannelPipeline onUnhandledInboundException
WARNING: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
java.io.IOException: Too many open files
	at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
	at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422)
	at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250)
	at io.netty.channel.socket.nio.NioServerSocketChannel.doReadMessages(NioServerSocketChannel.java:135)
	at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:75)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:563)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:504)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:418)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:385)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
	at java.lang.Thread.run(Thread.java:748)

字面意思,就是打开的文件太多了,服务器着不住了。他handle不了啦。

然后,查询之后,别的都说是打开的“句柄”太多,哦霍,咱也不知道啥是句柄。

咱就说一下,我这是为啥出了上面的提示信息吧。

罪魁祸首,就是上面的一行代码

因为每次请求之后,都会走上面的这个方法,然后呢,这个方法每次都会去创建一个 elastic search的连接,

这个连接呢,就像是数据库的连接一样,你每次都弄一个,然后,一个进程允许的连接数估计是有限个的。然后,最后就到上限了,而且,创建的连接多了,也不关闭,一直创建,内存也就被吃完了。

为啥呢?

因为是,写代码的小老弟没这个概念呗。

觉得这个小模块,也不需要啥设计,就是啪啪啪一通复制粘贴稍加改动

丢丢丢,代码正常运行,哎,结果符合预期。OK,我的任务完了。怡然自得。小case。

哎,这就是“无知者无畏”。

应该怎么改呢?

单例模式了解一下。标准的。

扩展

好好再学习一下:

1,什么是“单例模式”

我估计当年老师讲的跟上面的还是有点不一样的,比如,volatile老师估计就给你略过了吧。

单例模式的四种实现--应该是你见过的最全的单例模式实现啦

2,什么时候使用“单例模式”

就比如这个数据库连接,不管是连elastic search 还是mongo db 还是xxx db 等。 这些个连接,在系统中,没啥特殊要求,一个就够了,所以,以后再遇到类似的问题呢,咱不能也是啪啪啪一通复制粘贴,一验证,哎,咱这代码正常运行,符合预期,就完事儿啦。尽量看的远一点。

netty:java.io.ioexception:connectionresetbypeer(代码片段)

文章目录1.背景1.背景netty聊天室程序,聊天页面如下:点击上传图片开始报错:最大上传限制后来报错:java.io.IOException:Connectionresetbypeer atsun.nio.ch.FileDispatcherImpl.read0(NativeMethod) atsun.nio. 查看详情

急!急!急!服务起来一直报java.io.ioexception:connectionresetbypeer这个怎么解决!

java.io.IOException:Connectionresetbypeer atsun.nio.ch.FileDispatcherImpl.read0(NativeMethod) atsun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) atsun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) atsun.nio.ch.IOUtil.read(IOUtil.java:192) atsun.nio.ch.SocketChannelImpl.read(SocketCha... 查看详情

错误记录android应用post网络请求报错(java.io.ioexception:cleartexthttptraffictoxxxnotpermitted)(代码片段)

...信息如下:执行post请求信息,报如下错误:W/System.err:java.io.IOException:CleartextHTTPtraffictoxxxnotpermittedW/System.err:atcom.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)W/System.err:atcom.android.okhttp.internal.huc.HttpURLConnectionImpl.execu... 查看详情

java.io.ioexception:brokenpipe

最近项目虽然已经在正常运行,但是偶尔会有一些不知名的错误冒出来,比如时不时报一个数据库主键重复或者某些时候会有null的异常报出来。看看代码写完能跑起来还只是开始而已,需要不断精进重构,才能让代码运行流畅... 查看详情

java.io.ioexception:java.io.filenotfoundexception:/tmp/tomcat.2457258178644046891.8080/work/tomcat

环境:Ubuntu18vue+elementUI实现文件的上传报错信息:java.io.IOException:java.io.FileNotFoundException:/tmp/tomcat.2457258178644046891.8080/work/Tomcat/localhost/innovate-admin/C:/up/154884318438733213952/sys-error.lo 查看详情

【java】java.io.ioexception:streamclosed问题!赶ddl!急!

...===以下是报错================Exceptioninthread"main"java.io.IOException:Streamclosedatjava.io.BufferedInputStream.getBufIfOpen(UnknownSource)atjava.io.BufferedInputStream.read(UnknownSource)atsun.nio.cs.StreamDecoder.readBytes(UnknownSource)atsun.nio.cs.StreamDecoder.implRead(UnknownS... 查看详情

java.io.ioexception:com.esotericsoftware.kryo.kryoexception

项目是基于Dubbo框架做的微服务工程,前端在调用RESTful接口的时候,报内部服务错误。查看后端服务日志,报错内容如下:复制代码java.io.IOException:com.esotericsoftware.kryo.KryoException:EncounteredunregisteredclassID:765269atcom.ali 查看详情

用poi多次调用write()方法报java.io.ioexception:streamclosed。求大神指导。

从数据库中查询数据导入一个工作簿的多个sheet工作表,第一个sheet表中可以正常导入,第二个后再调用write方法就报以上错误。你是不是在那里调用了close方法,把输入流给关闭了,检查一下吧!希望能帮助到你。追问我没有做clo... 查看详情

解决java使用response下载文件报错,并总结可能出错的原因:java.io.ioexception:你的主机中的软件中止了一个已建立的连接。(代码片段)

...下,我擦!报错了!赶紧去控制台查看日志java.io.IOException:你的主机中的软件中止了一个已建立的连接。发现并解决问题此时我们的代码是这样的privatevoiddownloadFile(Longsi 查看详情

java.io.IOException:grpc 失败

】java.io.IOException:grpc失败【英文标题】:java.io.IOException:grpcfailed【发布时间】:2017-12-1404:51:22【问题描述】:当我使用调用getFromLocationName时,我得到一个描述为“grpcfailed”的IOException。运行的代码@OverridepublicvoidonMapReady(GoogleMap... 查看详情

java.io.IOException: toDerInputStream 拒绝标签类型 77

】java.io.IOException:toDerInputStream拒绝标签类型77【英文标题】:java.io.IOException:toDerInputStreamrejectstagtype77【发布时间】:2021-04-1715:53:55【问题描述】:我正在尝试使用Java从weblogic服务器读取pfx证书,但我收到java.io.IOException:toDerInputStr... 查看详情

java.io.ioexception:connectionresetbypeer和java.io.ioexception:connectiontimedout。socket

总报这两个错误。java.io.IOException:Connectionresetbypeeratsun.nio.ch.FileDispatcher.read0(NativeMethod)atsun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)atsun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:237)atsun.nio.ch.IOUtil.read(IOUtil.java:210)atsun.nio.ch.SocketChannelImpl... 查看详情

任务 ':app:compileDebugKotlin' java.io.IOException 执行失败

】任务\\\':app:compileDebugKotlin\\\'java.io.IOException执行失败【英文标题】:Executionfailedfortask\':app:compileDebugKotlin\'java.io.IOException任务\':app:compileDebugKotlin\'java.io.IOException执行失败【发布时间】:2020-05-2120:43:07【问题描述】:我不知道 查看详情

java.io.ioexception:nosnapshotfound,buttherearelogentries

...,exitingabnormally(org.apache.zookeeper.server.ZooKeeperServerMain)java.io.IOException:Nosnapshotfound,buttherearelogentries.Somethingisbroken! ……zookeeper配置文件定义的dataDir路径是/tmp,我看根目录磁盘空间100%了,推测磁盘空间不足导致的zookeeper启动... 查看详情

java.io.IOException:系统找不到指定的路径

】java.io.IOException:系统找不到指定的路径【英文标题】:java.io.IOException:Thesystemcannotfindthepathspecified【发布时间】:2014-04-2419:09:55【问题描述】:在特定服务器(Windows2012服务器R2)上,我无法创建临时文件。每次尝试都会出现以... 查看详情

android java.io.IOException:传输端点未连接

】androidjava.io.IOException:传输端点未连接【英文标题】:androidjava.io.IOException:Transportendpointisnotconnected【发布时间】:2013-03-0808:24:17【问题描述】:我需要向蓝牙设备发送一个字符串。但是在发送时,我在java.io.OutputStream.write(byte[]... 查看详情

java.io.ioexception:brokenpipe

o.s.web.servlet.HandlerExecutionChain:HandlerInterceptor.afterCompletionthrewexceptionorg.apache.catalina.connector.ClientAbortException:java.io.IOException:Brokenpipe atorg.apache.catalina.connector. 查看详情

React Native:错误:[消息/未知] java.io.IOException:java.util.concurrent.ExecutionException:java.io.IOExcept

】ReactNative:错误:[消息/未知]java.io.IOException:java.util.concurrent.ExecutionException:java.io.IOException:FIS_AUTH_ERROR【英文标题】:ReactNative:Error:[messaging/unknown]java.io.IOException:java.util.concurrent.ExecutionException 查看详情