gpt4 book ai didi

Elasticsearch RestHighLevelClient (6.0.0) -- 运行时超时异常

转载 作者:行者123 更新时间:2023-11-29 02:50:35 73 4
gpt4 key购买 nike

我们的应用程序在 elasticsearch 服务器中索引(存储)文档时遇到超时异常。它不会经常发生,但大约每天一次。这是详细信息。

pom.xml

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.0.0</version>
</dependency>

初始化

@Bean
public RestHighLevelClient buildHighLevelClient() {
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(httplist.toArray(new HttpHost[]{})));
return client;
}

异常信息

java.lang.RuntimeException: error while performing request
at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:682)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:220)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:192)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:428)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:414)
at org.elasticsearch.client.RestHighLevelClient.bulk(RestHighLevelClient.java:229)
......
Caused by: java.util.concurrent.TimeoutException
at org.apache.http.nio.pool.AbstractNIOConnPool.processPendingRequest(AbstractNIOConnPool.java:364)
at org.apache.http.nio.pool.AbstractNIOConnPool.processNextPendingRequest(AbstractNIOConnPool.java:344)
at org.apache.http.nio.pool.AbstractNIOConnPool.release(AbstractNIOConnPool.java:318)
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.releaseConnection(PoolingNHttpClientConnectionManager.java:303)
at org.apache.http.impl.nio.client.AbstractClientExchangeHandler.releaseConnection(AbstractClientExchangeHandler.java:239)

最佳答案

我通过以下设置解决了这个问题:

RestClientBuilder builder = RestClient.builder(
new HttpHost("localhost", 9200, "http")); builder.setRequestConfigCallback(
new RestClientBuilder.RequestConfigCallback() {
@Override
public RequestConfig.Builder customizeRequestConfig(
RequestConfig.Builder requestConfigBuilder) {
return requestConfigBuilder.setConnectionRequestTimeout(-1);
}
});

底层的 Apache RestClient 在其连接池中有 AFAIK 10 个并发连接的限制。因此,如果有超过 10 个并发请求,则额外的请求会排队,并且可能会达到 org.elasticsearch.client.RestClientBuilder

中设置的默认 DEFAULT_CONNECTION_REQUEST_TIMEOUT_MILLIS = 500;

关于Elasticsearch RestHighLevelClient (6.0.0) -- 运行时超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48534201/

73 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com