java - ElasticSearch - RestHighLevelClient java.io.IOException:现有连接被远程主机强行关闭
问题描述
100K
我使用单个查询从索引中获取plus 文档。为此,我正在使用ScrollSearch
API。之后,我将逐个迭代每个文档,并在其中添加一个字段并为此创建一个新索引。
RestHighLevelClient
用于 Java 代码和 ElasticSearch 之间的连接。我已经设置了几个小时的Timeout
选项25
(setMaxRetryTimeoutMillis(90000000))。
但是,30 分钟后仍然出现以下异常
Exception in thread "main" java.io.IOException: An existing connection was forcibly closed by the remote host
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(Unknown Source)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.read(Unknown Source)
at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
at org.apache.http.impl.nio.reactor.SessionInputBufferImpl.fill(SessionInputBufferImpl.java:204)
at org.apache.http.impl.nio.codecs.AbstractMessageParser.fillBuffer(AbstractMessageParser.java:136)
at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:241)
at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81)
at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39)
at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114)
at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588)
at java.lang.Thread.run(Unknown Source)
我的 ElasticSearch 服务器正在远程机器上运行。一旦我得到这个异常,我的远程机器 ES 服务器也会自动关闭。
请在下面找到我为RestHighLevelClient
.
private static RestClientBuilder builder = RestClient.builder(new HttpHost("My_Server.com", 9200, "http"),
new HttpHost("My_Server.com", 9201, "http"))
.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
@Override
public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
return requestConfigBuilder.setConnectTimeout(90000000)//25hours
.setSocketTimeout(90000000);
}
})
.setMaxRetryTimeoutMillis(90000000);
private static RestHighLevelClient instance4 = new RestHighLevelClient(builder);
public static RestHighLevelClient getInstance3() {
return instance4;
}
解决方案
推荐阅读
- c# - 从 HttpClient continuation 调度时出现明显的内存泄漏
- c# - 负数的正方体
- css - 我可以使用 translate3D (css) 或在单个图像或元素上创建另一个 css 动画来创建蝴蝶动画效果吗?
- r - 基于某些字符串的排序列
- python - 如何定义变量以仅使用部分单元格值?
- android-studio - android studios/gradle 同步启动时多个重复的 Openjdk 二进制文件失败,96% RAM
- django - django-allauth Google 登录无法在 iOS 上运行
- python - 如何更改标签的文本 - Tkinter
- python-3.x - 如何在 Python3 中将日志记录与多处理一起使用
- windows - 损坏的包管理器?找不到模块提供程序 (PowerShellGet)