网上很多说法是增加修改可打开文件数
通过修改ulimit -n <setting number> 这个命令来实现。
其实都是治标不治本的办法。
要解决这个问题,要从两个方面入手。
一个是设置session的超时状态。
比如设置读取闲置时间,根据自己的需求去设置,及时关闭掉觉得超时的session。
acceptor.getSessionConfig().setIdleTime(IdleStatus.READER_IDLE,600);
第二个则是根本的解决办法。
@Override
public void sessionCreated(IoSession session) throws Exception {
// TODO Auto-generated method stub
SocketSessionConfig cfg = (SocketSessionConfig) session.getConfig();
cfg.setKeepAlive(false);
cfg.setSoLinger(0); //这里设置可以保证完全关闭。
}
如上。
然后使用lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
看看你的文件打开数目正常了没?