【坐等大神】调用Elasticsearch报错

Elasticsearch | 作者 Buddha | 发布于2019年08月05日 | 阅读数:207

org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool
at org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:412)
at org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1.getPoolEntry(ConnPoolByRoute.java:298)
at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager$1.getConnection(ThreadSafeClientConnManager.java:238)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:423)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:882)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
at com.sinosoft.search.service.spring.SearchServiceSpringImpl.getURLContent(SearchServiceSpringImpl.java:501)
at com.sinosoft.search.service.spring.SearchServiceSpringImpl.searchQuery(SearchServiceSpringImpl.java:148)
at com.sinosoft.search.service.spring.SearchServiceSpringImpl$$FastClassByCGLIB$$7ea0118.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
报错如上。
 
应该是并发的情况导致的,还有其他情况会导致这个问题?
有什么办法解决吗? 
 
 
 
 
已邀请:

HelloClyde

赞同来自:

从连接池拿连接超时:
1.增加超时
2.减少连接池队列
3.增加连接池初始化连接数量
 
选一个策略,或者多个策略组合

Jea - 一只猿

赞同来自:

不会java,但个人使用ES的经验来看,使用连接池并发时如果出现超时,首选方案是增加初始化数量,如果机器允许,加吧。
其他方案都不太友好,增加超时业务可能会等待久,如果是分析任务那就随意
增加集群的负载节点,使用多个节点初始化连接池,还是增加连接池初始化数量,这个要钱,所以不推荐!就是
`node.master:false;  node.data:false;`这种节点
不知道java能不连接复用啊,如果能的话那优化代码更好了
 
基本上@HelloClyde 说完了,就这几条,没了

laoyang360 - [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

当前节点的处理能力满足不了当前请求的需求导致的。
1、减少并发请求,增大并发间隔。
2、从ES的线程池、队列角度看有没有优化提升空间,一定要结合硬件配置,不揠苗助长。

要回复问题请先登录注册