mina高并发短连接以致java.io.IOException: Too many open files解决方案
mina高并发短连接导致java.io.IOException: Too many open files解决方案?? 这几天在解决一个用mina开发的
mina高并发短连接导致java.io.IOException: Too many open files解决方案
?? 这几天在解决一个用mina开发的高并发通信过程中产生的一个bug。
?? 模拟场景为:
?? 通过定时触发启动线程模拟高并发短连接测试,测试的服务端有2个,一个是服务有起,一个没起,客户端和服务端均在同一服务器上。执行一段时间后linux主机上通过lsof命令查看,发现有递增的文件句柄,pipe和eventpoll。
?? 抛出的异常如下:
?
final?NioSocketConnector?connector?=?new?NioSocketConnector();??????????final?String[]?result?=?new?String[1];??????????connector.getFilterChain().addLast("codec",??????????????????new?ProtocolCodecFilter(new?ObjectSerializationCodecFactory()));??????????connector.setHandler(handler);????????????//设置超时??????????connector.setConnectTimeoutMillis(defaultConnectTimeOut);??????????ConnectFuture?connectFuture?=?connector.connect(address);??????????connectFuture.awaitUninterruptibly();???//同步,等待,直到连接完成??????????if?(connectFuture.isDone())?{??????????????if?(!connectFuture.isConnected())?{?//若在指定时间内没连接成功,则抛出异常??????????????????logger.info("fail?to?connect?"?+?logInfo);??????????????????connector.dispose();????//不关闭的话会运行一段时间后抛出,too?many?open?files异常,导致无法连接????????????????????throw?new?Exception();??????????????}??????????}?