服务启动几天后,ES出现 no Elasticsearch node availabe,怎么解决?

问题描述

每次启动服务刚开始请求是没有问题的,但是一段时间以后,就会出现cannot assign requested address:no Elasticsearch node availabe的问题,并且后面再也无法连接上ES, 重启服务后又好了,想知道为什么?

问题出现的环境背景及自己尝试过哪些方法

在docker上拉起一个go后端服务以后,刚开始访问正常,但是一段时间以后,出连接不了ES服务器的问题,具体error log信息如下:

"level":"error","ts":1572062220.1293163,"caller":"basicSearch/searcher_factory.go:24","msg":"初始化ES Client出错, 具体错误信息:","error":"health check timeout: Head https://es.xxxxxxx.com: dial tcp xxx.xx.xx.255:443: connect: cannot assign requested address: no Elasticsearch node available"

尝试过的方法:
将SetSniff设置为false,没用。
怀疑是连接数太多导致的,所以起了500个线程并发去访问,但在本地依然能够处理过来,也就是没有出现上述问题。

相关代码

ES Client配置如下:

    client, err := elastic.NewClient(elastic.SetURL(urls...), elastic.SetSniff(false),
        elastic.SetHttpClient(httpClient), elastic.SetHealthcheck(false))

你期待的结果是什么?实际看到的错误信息又是什么?

不管过多长时间,都能正常连接服务器。

阅读 5.2k
1 个回答

这个报错是因为 es node 找不到了。如果是自建的,看下你的ES集群是否正常、或者你本地与ES的网络是否畅通

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题