`
BlackWing
  • 浏览: 196547 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Linux下too many open files问题

阅读更多
在solr相关程序运行一段时间后,很容易出现too many open files错误,以前因为找不到有效的解决办法(solr本身已经优化),所以只能用ulimit -SHn 20000来增大进程open files的数目。

今天意外的找到一个办法,似乎能比较好解决问题。

这个一方面可以优化solr,另一方面,我自己调用httpclient的代码没有设置好。主要是通过设置PostMethod的setRequestHeader("Connection","close"),使程序获取完数据后,立刻释放连接,减少close_wait的连接数。


文章在此:

http://blog.sina.com.cn/s/blog_4550f3ca01010g9n.html
分享到:
评论
4 楼 BlackWing 2012-12-14  
hrdxwandg 写道
你好,我也遇到这个问题,但是我用的是httpclient4.2.1,里面没有这个函数了,要是也想做对应的修改,该怎么做呢?先谢过啦~


我那个设置connection close的方法是直接在http client设置,而不是solr的接口。close_wait太多可以把tomcat的maxKeepAliveRequests设为1
3 楼 hrdxwandg 2012-11-29  
BlackWing 写道
hrdxwandg 写道
你好,我也遇到这个问题,但是我用的是httpclient4.2.1,里面没有这个函数了,要是也想做对应的修改,该怎么做呢?先谢过啦~

其实这个solr错误可以参考《Apache.Solr.3.1.Cookbook》这本书上的方法优化。新版的httpclient没用过,看了下api,或者你试试
HttpPost.setHeader("Connection","close");


非常感谢你的回复,我看了你说的那本书,里面讲解的主要是在创建索引的时候进行了优化。但是我现在的问题是索引文件数不多,主要还是在连接时有很多close_wait状态占用了文件数。

你说用HttpPost.setHeader,那这个怎么和HttpClient联系起来,并作为HttpSolrServer的参数呢?
	HttpPost httpPost = new HttpPost();
			httpPost.setHeader("Connection","close");
				
			HttpClient httpClient = new DefaultHttpClient();
			httpClient.execute(httpPost);
			HttpSolrServer server = new HttpSolrServer(url,httpClient);
	


这么处理有问题,但是不知道该怎么将HttpPost和HttpSolrServer联系起来。
最近才接触这个东西,一直没搞明白,不好意思,再次麻烦了~
2 楼 BlackWing 2012-11-28  
hrdxwandg 写道
你好,我也遇到这个问题,但是我用的是httpclient4.2.1,里面没有这个函数了,要是也想做对应的修改,该怎么做呢?先谢过啦~

其实这个solr错误可以参考《Apache.Solr.3.1.Cookbook》这本书上的方法优化。新版的httpclient没用过,看了下api,或者你试试
HttpPost.setHeader("Connection","close");
1 楼 hrdxwandg 2012-11-26  
你好,我也遇到这个问题,但是我用的是httpclient4.2.1,里面没有这个函数了,要是也想做对应的修改,该怎么做呢?先谢过啦~

相关推荐

Global site tag (gtag.js) - Google Analytics