首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

MINA2 异常解决办法- Linux下tomcat报错“java.net.SocketException: Too many open files”

2012-06-28 
MINA2 错误解决方法-- Linux下tomcat报错“java.net.SocketException: Too many open files”部署到linux下

MINA2 错误解决方法-- Linux下tomcat报错“java.net.SocketException: Too many open files”
部署到linux下的tomcat,今天发现包了“java.net.SocketException: Too many open files”,以前从来没有遇到过,在此记录一下:

彻底解决问题的是第三步, 所以,可以直接跳到第三步去看解决方法和步骤,当日第一、第二步是我不断探索,尝试解决问题的过程,虽然没有找到点上,但是还是有些意义的,因为linux切实有打开资源数量的限制,肯定需要修改的。

异常信息:


修改后的内容:

 
修改后的内容
    # 第二次解决添加的内容      # kevin.xie added, fixed 'too many open file' bug, limit open max files 1024, 2011-10-24      * - nofile 102400            # 第三次(本次)解决添加的问题(不过这个应该可以不修改,没有印证,也懒得修改了)      # kevin.xie added, fixed 'too many open file' bug', 2012-01-04      * soft nofile 65536      * hard nofile 65536  
1 楼 zhangyou1010 2012-01-12   我们项目也出现了这个问题。 2 楼 xieyanhua 2012-01-12   能不能把你的bugs发来看看,因为这个问题,我也是经过三次修改后,才彻底解决该问题。我是遇到了错误信息:“Too many open files”和“No buffer space availabel”,从我的项目上看,两个问题都是因为使用MINA2时,有些资源没有关闭造成的。但是出现“Too many open files”的错误(linux上面,windows下没有发现该问题) ,肯定是因为linux下对每个进程打开系统资源数的限制,默认是1024,打开了资源没有释放。所以如果是“Too many open files”错误,肯定是你的程序里打开了资源没有释放!

    刚开始遇到这个错误,我也以为是linux自己配置的的问题,节后解决过程如下:
第一次解决,因为对linux不是很熟悉,以为是linux服务器配置的问题(默认安装的配置) :
       按上面的步骤(第一和第二步修改,方法一和方法2都修改了),情况好转,以为解决了。但时间一长问题又重现了。因为开始系统打开的资源少,所以问题重现的时间间隔就比较长。人因都是人为发送请求。所以有时时候一两个星期都不出现,如果操作平率高的话,就出现快点了。

第二次解决,因为发现第一次方法没有解决好问题。依然以为是linux配置的问题,在第一次的基础上,所以又看了资料,于是有了第二次解决,方法就是按上面的第三步的操作,修改了一些配置文件。该完后,发现情况好了很多,两三个星期都不见有问题。但后来程序上使用的定时调度任务,每隔几分钟会就会打开十几个请求链接,这样一跑,快的话,不到半个小时就出现问题了。

第三次解决,这次基本上不认为是服务器本省的问题,肯定是程序那里出问题,所以又看了很多资料,最后终于解决了问题(经过测试,目前其了5个任务,每个人物6个线程,所有任务基本在20~5分钟内完成,比第二修改后的任务多了5倍这样,请求时间间隔也短了很多),经过7天的运行,没有再出现过一次这样的错误。

问题的原因是:原来的MINA2程序之关了IoSession,并没有关闭IoConnector实例,但恰恰就是因为没有关闭每次打开的IoConnector实例,造成了"Too many open files ".

具体看原帖,我已在后面更新了 3 楼 weihuijing123 2012-03-07   谢谢!很有用。 4 楼 xieyanhua 2012-03-07   weihuijing123 写道谢谢!很有用。
能帮助到你,感到很开心

热点排行