mina高并发短连接导致java.io.IOException: Too many open files解决方案
这几天在解决一个用mina开发的高并发通信过程中产生的一个bug。模拟场景为:
通过定时触发启动线程模拟高并发短连接测试,测试的服务端有2个,一个是服务有起,一个没起,客户端和服务端均在同一服务器上。执行一段时间后linux主机上通过lsof命令查看,发现有递增的文件句柄,pipe和eventpoll。
抛出的异常如下:
Failed to create a new instance of org.apache.mina.transport.socket.nio.NioProcessor: null
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedConstructorAccessor110.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27 )
at java.lang.reflect.Constructor.newInstance(Constructor.java:513 )
at org.apache.mina.core.service.SimpleIoProcessorPool.<init>(SimpleIoProcessorPool.java:180 )
at org.apache.mina.core.service.SimpleIoProcessorPool.<init>(SimpleIoProcessorPool.java:112 )
at org.apache.mina.core.polling.AbstractPollingIoConnector.<init>(AbstractPollingIoConnector.java:93 )
at org.apache.mina.transport.socket.nio.NioSocketConnector.<init>(NioSocketConnector.java:56 )

在mina处理高并发短连接时,可能会遇到'java.io.IOException: Too many open files'的错误。这通常是由于系统限制了可打开文件描述符的数量。解决方法包括调整系统最大打开文件数限制和优化mina会话管理,减少文件描述符的使用。

2023

被折叠的 条评论
为什么被折叠?



