0
点赞
收藏
分享

微信扫一扫

Elasticsearch High Level Rest Client偶现访问集群超时的问题定位与解决

小飞侠熙熙 2022-05-03 阅读 59

问题

预警报错

解决

第一种:各博客大佬的解决方案,本人目前用的也是这种,问题暂未复现


@Service
public class EsClientConfiguration implements RestClientBuilderCustomizer {

    @Override
    public void customize(RestClientBuilder builder) {
        builder.setHttpClientConfigCallback(requestConfig -> requestConfig.setKeepAliveStrategy(
                (response, context) -> TimeUnit.MINUTES.toMillis(5)));
        builder.setRequestConfigCallback(
                new RestClientBuilder.RequestConfigCallback() {
                    @Override
                    public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
                        return requestConfigBuilder.setConnectTimeout(30000)
                                .setSocketTimeout(300 * 1000);
                    }
        });
    }
}

第二种:在腾讯云找到的大佬写的解决方案,暂未实验

第一步:

        //TODO 这是在腾讯元看到的博客解决方案
        builder.setRequestConfigCallback(configCallback);
                builder.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom()
                        .setSoKeepAlive(true)
                        .build()));
//设置系统层面的tcp keepalive探测保活时间为300s, 也就是每隔5分钟发送一次探活报文,因为默认的7200s时间太长了,有可能会被网关主动断掉连接。

第二步:
设置系统层面的tcp keepalive探测保活时间为300s, 也就是每隔5分钟发送一次探活报文,因为默认的7200s时间太长了,有可能会被网关主动断掉连接。

举报

相关推荐

Java High Level REST Client

0 条评论