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 )