Linux下Too many open files 问题的解决
系统运行环境:Tomcat+Linux
Toomanyopenfiles经常在使用linux的时候出现,大多数情况是程序没有正常关闭一些资源引起的,所以出现这种情况,请检查io读写,socket通讯等是否正常关闭。
最近系统在跟第三方应用联调webservice接口,接口经常出现连接超时,或者调用失败,导致Socket连接没及时关闭,打开的资源超过linux默认值1024。下面贴下解决方法:
HttpClientParamshttpParams=newHttpClientParams();
httpParams.setParameter(HttpClientParams.USE_EXPECT_CONTINUE,Boolean.FALSE);
httpParams.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT,5*1000L);
client=newClient(newURL(serviceUrl));
client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS,httpParams);
arr=client.invoke(method,params);
红色为增加的解决办法。如果在高并发的系统中linux的默认值1024可能还不够用,可以设置它的值。下面介绍linux命令
ulimit-a---查看openfiles
cat/proc/sys/fs/file-max---查看设置打开最大值