java客户端es查询偶尔超时或者有时一直超时,重启java客户端端后正常
环境:centos 7es 7.13.1jdk1.8es客户端 :elasticsearch-rest-high-level-client 7.13.1springboot 2.0.5出现问题:springboot 集成elasticsearch-rest-high-level-client 后,当服务无请求一段时间,接口查询会出现超时问题,即使是根据id查询es也是一样。有时会恢复,...
·
环境:
centos 7
es 7.13.1
jdk1.8
es客户端 :elasticsearch-rest-high-level-client 7.13.1
springboot 2.0.5
出现问题:
springboot 集成elasticsearch-rest-high-level-client 后,当服务无请求一段时间,接口查询会出现超时问题,即使是根据id查询es也是一样。有时会恢复,有时会一直超时。重启java服务后会好一段时间。
排查问题:
在es服务端未抓到请求。但是在java服务端可以抓到请求包,但是都是请求失败的。查看java服务端有很多长连接未关闭。
解决方式:
restClientBuilder.setHttpClientConfigCallback(httpClientBuilder -> {
//显式启用 TCP keepalive
httpClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom()
.setSoKeepAlive(true)
.build());
/**
* 其他设置请添加
*/
return httpClientBuilder;
});
并且调整java服务端linux的sysctl.conf里keepalive时间:
//原来默认的7200调整为 300
net.ipv4.tcp_keepalive_time = 300
经过测试,linux的keepalive时间不调整也没不会出现。
参考文章:
更多推荐
已为社区贡献1条内容
所有评论(0)