java客户端es查询偶尔超时或者有时一直超时,重启java客户端端后正常

本文描述了在SpringBoot应用中使用elasticsearch-rest-high-level-client7.13.1版本时遇到的超时问题。当服务无请求一段时间后,查询接口会超时,即使是对ID进行查询也会如此。问题表现为请求无法到达ES服务端,但Java服务端显示很多长连接未关闭。通过设置TCP keepalive时间和调整系统配置解决了此问题,确保了连接的保持和有效查询。
摘要由CSDN通过智能技术生成

环境:

        centos 7

        es 7.13.1

        jdk1.8

        es客户端 :elasticsearch-rest-high-level-client 7.13.1

        springboot 2.0.5

出现问题:

        springboot 集成elasticsearch-rest-high-level-client 后,当服务无请求一段时间,接口查询会出现超时问题,即使是根据id查询es也是一样。有时会恢复,有时会一直超时。重启java服务后会好一段时间。

排查问题:

        在es服务端未抓到请求。但是在java服务端可以抓到请求包,但是都是请求失败的。查看java服务端有很多长连接未关闭。

解决方式:

restClientBuilder.setHttpClientConfigCallback(httpClientBuilder -> {


			//显式启用 TCP keepalive
			httpClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom()
					.setSoKeepAlive(true)
					.build());

			/**
			 * 其他设置请添加
			 */

			return httpClientBuilder;
		});

并且调整java服务端linux的sysctl.conf里keepalive时间:

//原来默认的7200调整为 300
net.ipv4.tcp_keepalive_time = 300

经过测试,linux的keepalive时间不调整也没不会出现。

参考文章:

https://github.com/elastic/elasticsearch/issues/65213

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值