日期:2014-05-16  浏览次数:20603 次

Linux下Too many open files 问题的解决
系统运行环境:Tomcat+Linux

Too many open files经常在使用linux的时候出现,大多数情况是程序没有正常关闭一些资源引起的,所以出现这种情况,请检查io读写,socket通讯等是否正常关闭。

最近系统在跟第三方应用联调webservice接口, 接口经常出现连接超时,或者调用失败,导致Socket连接没及时关闭,打开的资源超过linux默认值1024。下面贴下解决方法:

   HttpClientParams httpParams = new HttpClientParams();
   httpParams.setParameter(HttpClientParams.USE_EXPECT_CONTINUE,Boolean.FALSE);
   httpParams.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 5*1000L);
   client = new Client(new URL(serviceUrl));
   client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS,httpParams);
   arr = client.invoke(method, params);
红色为增加的解决办法。如果在高并发的系统中linux的默认值1024可能还不够用,可以设置它的值。下面介绍linux命令

ulimit -a   ---查看open files 

cat /proc/sys/fs/file-max ---查看设置打开最大值

可以参考这个来修改最大打开数    http://www.iteye.com/topic/240389