ElasticSearch SocketTimeoutException解决

这篇具有很好参考价值的文章主要介绍了ElasticSearch SocketTimeoutException解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ES用了目前最新的版本,测试环境一直没有发现问题,一到生产就出现了SocketTimeoutException异常,而且很诡异,不是一直报,而是隔一段时间就报一下,谷歌了很久没有找到原因,最后加了一个配置后,就没有再报了

ES版本如下

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-elasticsearch</artifactId>
    <version>4.2.6</version>
</dependency>
对应ES版本
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.12.1</version>
</dependency>

异常如下 

Caused by: java.net.SocketTimeoutException: 30,000 milliseconds timeout on connection http-outgoing-19 [ACTIVE]
	at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:865)
	at org.elasticsearch.client.RestClient.performRequest(RestClient.java:283)
	at org.elasticsearch.client.RestClient.performRequest(RestClient.java:286)
	at org.elasticsearch.client.RestClient.performRequest(RestClient.java:270)
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1654)
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1624)
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1594)
	at org.elasticsearch.client.RestHighLevelClient.search(RestHighLevelClient.java:1110)
	at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.lambda$searchScrollStart$12(ElasticsearchRestTemplate.java:311)
	at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.execute(ElasticsearchRestTemplate.java:383)

ElasticSearch SocketTimeoutException解决

解决方法如下:文章来源地址https://www.toymoban.com/news/detail-505239.html

import org.apache.http.HttpResponse;
import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy;
import org.apache.http.protocol.HttpContext;
import org.elasticsearch.client.RestClientBuilder;
import org.springframework.boot.autoconfigure.elasticsearch.RestClientBuilderCustomizer;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

@Component
public class MyRestClientBuilderCustomizer implements RestClientBuilderCustomizer {

    @Override
    public void customize(RestClientBuilder builder) {
        // keep alive策略
        builder.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setKeepAliveStrategy(CustomConnectionKeepAliveStrategy.INSTANCE));
    }

    public static class CustomConnectionKeepAliveStrategy extends DefaultConnectionKeepAliveStrategy {

        public static final CustomConnectionKeepAliveStrategy INSTANCE = new CustomConnectionKeepAliveStrategy();

        private CustomConnectionKeepAliveStrategy() {
            super();
        }

        /**
         * 最大keep alive的时间(分钟)
         * 这里默认为10分钟,可以根据实际情况设置。可以观察客户端机器状态为TIME_WAIT的TCP连接数,如果太多,可以增大此值。
         */
        private final long MAX_KEEP_ALIVE_MINUTES = 10;

        @Override
        public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
            long keepAliveDuration = super.getKeepAliveDuration(response, context);
            // <0 为无限期keepalive
            // 将无限期替换成一个默认的时间
            if(keepAliveDuration < 0){
                return TimeUnit.MINUTES.toMillis(MAX_KEEP_ALIVE_MINUTES);
            }
            return keepAliveDuration;
        }
    }
}

到了这里,关于ElasticSearch SocketTimeoutException解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SocketTimeoutException:Read timed out问题解决org.apache.cxf.interceptor.Fault:Could not receive Message

    利用WebService给其它服务器地址发送请求时,遇到了一个报错: org.apache.cxf.interceptor.Fault:Could not receive Message。 控制台上显示: java.net.SocketTimeoutException:Read timed out。 搜了一下发现网上大部分是分享 org.apache.cxf.interceptor.Fault:Could not send Message。 发送问题的,很少有关于接收报错

    2024年02月05日
    浏览(44)
  • Spring Cloud 轻松解决跨域,别再乱用了!

    在Spring Cloud项目中,前后端分离目前很常见,在调试时,会遇到两种情况的跨域: 前端页面通过不同域名或IP访问微服务的后台,例如前端人员会在本地起HttpServer 直连后台开发本地起的服务,此时,如果不加任何配置,前端页面的请求会被浏览器跨域限制拦截,所以,业务

    2024年02月08日
    浏览(62)
  • 冷启问题目前常见解决方案

    随机冷启 个性化冷启 冷启动保量 冷启动保量,保证每个item曝光的次数一样,实时统计已曝光的次数和要曝光的次数 冷启动结束过滤,如果需曝光的量越大,且越接近冷启结束时间,得分越高,被曝光的概率越大 爬坡保量 实时统计曝光、点击、ctr;ctr越高,曝光越少,得分

    2024年02月11日
    浏览(50)
  • 用了cloudflare后,网站提示Sorry, you have been blocked怎么解决?

    其实cloudflare还是非常智能的,但有时候为了安全起见,我们在网站后台修改参数的时候会被CF拦截,我就遇到了好几次提示Sorry, you have been blocked的情况。 遇到这种情况后,我首先找了官方的说明文档,但操作了半天好像还是不行。 最终,折腾了N久之后,终于解决了。 由于

    2024年02月13日
    浏览(43)
  • pycharm下 安装完keras 解释器一更新就不能用了怎么解决

    PyCharm是一款常用的Python集成开发环境,而Keras则是一款基于Python的深度学习框架。在使用PyCharm安装完Keras后,有时会出现解释器更新导致Keras无法使用的问题。本文将介绍这个问题的原因及解决方法。 当我们使用PyCharm安装Keras时,通常会选择使用conda环境,并在PyCharm中指定解

    2024年02月10日
    浏览(67)
  • 物联网超高速发展,目前存在的灾难性问题无法解决

    当灾难在1秒内发生,传感器无法马上进行报警,在1秒内传感器可能被瞬间损坏、物联网只能应用用在灾难即将发生,对于突发没有前兆的灾难无法进行精确预测。所以可以通过民航飞机的黑匣子记录方案,在传感器应用的物联网高端领域仪器设备上安装黑匣子来记录,最后

    2024年02月01日
    浏览(43)
  • 宝塔面板+Nextcloud搭建教程——可能是目前最优解决方案

    个人/企业云盘项目,网上有许多种解决方案。既有像索鸟快传,Cloudreve等主要面向个人用户的项目,也不乏许多如Nextcloud, owncloud, 可道云等优秀的商用项目。 Nextcloud是一个极为优秀的个人/团体/商用网盘解决方案,自发布以来,已经经过了二十多个版本的更新迭代。其前身是

    2024年02月11日
    浏览(40)
  • copilot提示:很抱歉,目前无法连接到服务。请稍后重试或刷新 的解决方案

    此前能正常使用Copilot的,后来出现如下情况,提示“很抱歉,目前无法连接到服务。请稍后重试或刷新”,刷新无效,...里的设置也打不开。 检查了windows设置的“语言和区域”选项,确认国家和地区是“美国”,vpn地址也是非大陆地区,但就是连不上。 后面思考了下,co

    2024年02月05日
    浏览(48)
  • hive java.net.SocketTimeoutException: Read timed out 问题解

    问题解决方案: 步骤一:    在jdbc url 后面追加参数 ,设定各种超时时间参数设置为1800秒,因为hive任务可能会执行比较久,所以超时时间设置长一点 以下是我追加参数后的url 步骤二: 在通过jdbc 创建 Statement 语句对象时,设置语句对象的查询超时时间为1800秒,由于执行

    2024年02月16日
    浏览(45)
  • winform使用SetParent 嵌入excel,打开的excel跟随dpi 25%*125%缩放了两次,目前微软官方没有好的解决方案,为什么

    双重缩放问题在将 Excel 嵌入到 WinForm 中时确实可能会出现,这是因为两个不同的应用程序(WinForm 和 Excel)之间的 DPI 缩放逻辑不一致,导致双重缩放的结果。 在 Windows 操作系统中,DPI 缩放是一种全局的设置,用于适应高 DPI 显示设备,从而提高显示元素的大小。当您将 Ex

    2024年02月14日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包