You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Elasticsearch 8.16客户端向7.17集群批量写入时丢数据并报SocketTimeoutException问题求助

Elasticsearch 8.16客户端向7.17集群批量写入时丢数据并报SocketTimeoutException问题求助

大家好,最近我们在生产环境碰到了一个棘手的问题,想请社区的各位帮忙分析排查下:

环境配置对比

我们用两组几乎一致的配置对接Elasticsearch集群,结果运行状态天差地别:

  • 引发生产故障的配置:
    • Java版本:JDK 17
    • Elasticsearch客户端版本:8.16
    • Elasticsearch集群版本:7.17
      这套配置部署后,生产环境出现严重故障,相关集成服务完全不可用长达2天,最后只能通过回滚代码暂时解决问题。
  • 运行正常的配置:
    • Java版本:JDK 11
    • Elasticsearch客户端版本:8.16
    • Elasticsearch集群版本:7.17
      换成这套配置后,所有服务运行顺畅,没有出现任何异常。

排查到的错误日志

经过长时间调试,我们定位到了对应的错误日志(注:堆内存使用完全正常,已排除堆相关问题):

2025-06-07 07:03:29.839 DEBUG 744 --- [ient-0-thread-9] org.elasticsearch.client.RestClient : request [POST https://clustername:443/_bulk] failed
java.net.SocketTimeoutException: 30,000 milliseconds timeout on connection http-outgoing-391 [ACTIVE]
	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.timeout(HttpAsyncRequestExecutor.java:387)
	at org.apache.http.impl.nio.client.InternalIODispatch.onTimeout(InternalIODispatch.java:98)
	at org.apache.http.impl.nio.client.InternalIODispatch.onTimeout(InternalIODispatch.java:40)
	at org.apache.http.impl.nio.reactor.AbstractIODispatch.timeout(AbstractIODispatch.java:175)
	at org.apache.http.impl.nio.reactor.BaseIOReactor.sessionTimedOut(BaseIOReactor.java:261)
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.timeoutCheck(AbstractIOReactor.java:506)
	at org.apache.http.impl.nio.reactor.BaseIOReactor.validate(BaseIOReactor.java:211)
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280)
	at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591)
	at java.base/java.lang.Thread.run(Thread.java:833)
2025-06-07 07:03:29.839 DEBUG 744 --- [ient-0-thread-9] org.elasticsearch.client.RestClient : updated [[host=https://505e6c4b56953250650fe014e9230a04.ece.sgmonitoring.prd.euw.gbis.sg-azure.com:443]] already in blacklist

目前我们的核心疑问是:为什么仅仅将JDK版本从11升级到17,就会导致Elasticsearch客户端的批量写入请求频繁触发SocketTimeoutException,进而引发生产级故障?有没有朋友遇到过类似问题,或者有排查思路可以分享的?


内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 08:53:09