java – JestClient在空闲一段时间后抛出SocketTimeoutException

我正在使用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();
}

这里有什么我想念的吗?

解决方法:

我会尝试一个想法:查看此功能 – https://github.com/searchbox-io/Jest/pull/149 – 意味着,配置maxConnectionIdleTime以便在实际使用之前终止空闲连接(这将导致您获得超时异常).测试中的一个例子:https://github.com/searchbox-io/Jest/blob/v2.0.4/jest/src/test/java/io/searchbox/client/JestClientFactoryIntegrationTest.java#L116

关于它的使用价值,我不确定网络套接字的超时是什么…猜测30秒.无论你为maxConnectionIdleTime设置什么,它应该小于那个.也许试着从超时中观察你得到的空闲时间保护你,哪些没有.

上一篇:三十一、jmeter 连接mysql数据库


下一篇:java – 无法使用TERMS QUERY从ELASTIC SEARCH查询字母数字字段