问题
解决
第一种:各博客大佬的解决方案,本人目前用的也是这种,问题暂未复现
@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时间太长了,有可能会被网关主动断掉连接。