【发布时间】:2018-06-22 12:57:31
【问题描述】:
我正在使用 JEST 在 spring-boot 应用程序中连接到 elasticsearch。当应用程序空闲一段时间(不向 elasticsearch 发送任何请求)时,JestClient 将抛出 SocketTImeoutException。我正在使用 bean 创建客户端:
@Bean
public JestClient client() throws Exception {
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(new HttpClientConfig
.Builder(esURL)
.multiThreaded(true)
.connTimeout(60000)
.readTimeout(60000)
.defaultMaxTotalConnectionPerRoute(10)
.maxTotalConnection(100).build());
return factory.getObject();
}
这里有什么我遗漏的吗?
【问题讨论】:
-
什么版本的es?开玩笑?
-
ES 版本 5.6.5 & Jest 版本 5.3.3
-
您已经找到解决方案了吗?我有完全相同的问题:一段时间内的第一个请求需要 30 秒并发生超时。然后下一个请求几乎立即给出响应)(使用 jest 2.0.4)
-
@Depzor @pkgajulapalli 只是提到一个我会尝试的想法:研究这个功能 - github.com/searchbox-io/Jest/pull/149 - 意思是,配置
maxConnectionIdleTime以便空闲连接被杀死 之前实际被使用(这会导致你得到超时异常)。测试本身的一个例子:github.com/searchbox-io/Jest/blob/v2.0.4/jest/src/test/java/io/… -
@andrei-stefan Mmm 添加此内容时:.IllegalStateException: 预期服务正在运行,但服务已失败
标签: java spring elasticsearch javabeans elasticsearch-jest