Elasticsearch出现Connection reset by peer

Elasticsearch出现Connection reset by peer分析

1.异常:

2024-06-13 13:17:10.539 WARN [http-nio-30411-exec-9]com.longdaotech.config.ESConfig -onFailure node:[host=http://192.168.239.253:9200]

2024/6/13 13:17:10 2024-06-13 13:17:10.541 WARN [http-nio-30411-exec-9]com.longdaotech.config.ESConfig -onFailure node:[host=http://192.168.239.249:9200]

2024/6/13 13:17:10 2024-06-13 13:17:10.542 WARN [http-nio-30411-exec-9]com.longdaotech.config.ESConfig -onFailure node:[host=http://192.168.239.67:9200]

2024/6/13 13:17:10 2024-06-13 13:17:10.543 ERROR [http-nio-30411-exec-9]com.longdaotech.front.modules.service.impl.GoodsSearchServiceImpl -{"monitorCode":"ESnull500601","message":"商品索引查询失败","contextContent":""}

2024/6/13 13:17:10 java.io.IOException: Connection reset by peer

2024/6/13 13:17:10 at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:793)

2024/6/13 13:17:10 at org.elasticsearch.client.RestClient.performRequest(RestClient.java:218)

2024/6/13 13:17:10 at org.elasticsearch.client.RestClient.performRequest(RestClient.java:221)

2024/6/13 13:17:10 at org.elasticsearch.client.RestClient.performRequest(RestClient.java:221)

2024/6/13 13:17:10 at org.elasticsearch.client.RestClient.performRequest(RestClient.java:205)

2024/6/13 13:17:10 at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1454)

2024/6/13 13:17:10 at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1424)

2024/6/13 13:17:10 at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1394)

2024/6/13 13:17:10 at org.elasticsearch.client.RestHighLevelClient.search(RestHighLevelClient.java:930)

2024/6/13 13:17:10 at com.longdaotech.front.modules.service.impl.GoodsSearchServiceImpl.goodsSerarch(GoodsSearchServiceImpl.java:361)

2024/6/13 13:17:10 at com.longdaotech.front.modules.controller.GoodsSearchController.searchGoods(GoodsSearchController.java:107)

2024/6/13 13:17:10 at sun.reflect.GeneratedMethodAccessor326.invoke(Unknown Source)

2024/6/13 13:17:10 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

2.分析

为什么服务端会关闭链接?

服务器会有TCP的Keepalive 经过一段时间如果没有操作就会自动断开连接功能,而ES默认就是取服务器的时长配置

linux查看超时时间默认为两小时

注:当ES服务端的keepAlive短于ES客户端的keepAlive,也会导致:服务端已经关闭了连接,客户端继续复用该连接,抛出异常。

3.解决

手动设置KeepAliveStrategy来配置keepAlive,保证客户端keepAlive小于服务端keepAlive,让客户端先于服务端关闭连接

查看服务器超时时间(单位秒)

cat /proc/sys/net/ipv4/tcp_keepalive_time

默认是7200s

解决办法有两个,一是设置keepalive小于服务器的超时时间,这样HttpClient会自己断开连接,下次再重连,由于SpringBoot没有提供设置改属性的地方,配置起来有点小麻烦,可以参考以下链接

ES ElasticSearch Connection reset by peer问题解决_阿里巴巴首席技术官的博客-CSDN博客

方案二是发送心跳,下面贴出代码

复制代码
@Scheduled(fixedRate = 60 * 1000 * 5)
public void heartbeatToES() {
    try {
        RequestOptions requestOptions = RequestOptions.DEFAULT.toBuilder().build();
        boolean result = restTemplate.getClient().ping(requestOptions);
        log.info("es状态: {}", result);
    } catch (Exception e) {

    }
}

方案二 设置ES服务端 tcp_keepalive_time时间大于等于客户端时间

https://blog.csdn.net/weixin_42195284/article/details/122399262

ES ElasticSearch Connection reset by peer问题解决_es connection reset by peer-CSDN博客

相关推荐
实心儿儿1 分钟前
Linux —— 进程间通信 - 命名管道
linux·运维·服务器
青槿吖11 分钟前
第一篇:Elasticsearch 入门踩坑记:从 “URL 拼写错误” 到跑通第一个搜索服务
大数据·elasticsearch·搜索引擎·spring cloud·微服务·架构·全文检索
Agent手记18 分钟前
多渠道订单数据处理自动化,落地步骤与ERP打通方案 | 2026企业级智能体实战手册
运维·人工智能·ai·自动化
呉師傅21 分钟前
统信UOS如何安装本地打印机驱动以及URL查找网络打印机并安装驱动方法
运维·服务器·网络·windows·电脑
iFlow_AI21 分钟前
构建自动化专属Paper库:用 Happy-Notes + iFlow-search-skill 搭建阅读写作流水线
运维·自动化·skill·心流·happy-notes
青梅橘子皮23 分钟前
Linux---开发工具(1)(vim,gcc/g++)
linux·运维·服务器
邮专薛之谦23 分钟前
Linux常用指令大全(完整版)
linux·运维·服务器
Elasticsearch28 分钟前
Elasticsearch ES|QL “读取时模式”:你的未映射字段一直都在那里
elasticsearch
Ogcloud_oversea29 分钟前
SD-WAN 技术架构解析:控制平面与数据平面的解耦实践
运维·网络·网络协议·网络安全·信息与通信
星纬智联技术36 分钟前
给 Amp 配置自定义 API:CLIProxyAPI 接入教程
运维·服务器·数据库