ElasticSearch|ES 连接超时及创建连接失败问题定位过程记录

这篇具有很好参考价值的文章主要介绍了ElasticSearch|ES 连接超时及创建连接失败问题定位过程记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题报错信息

socket.timeout:等待源端服务器响应超时
Traceback (most recent call last):
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connectionpool.py", line 384, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse()
  File "/opt/py/lib/python3.8/http/client.py", line 1347, in getresponse
    response.begin()
  File "/opt/py/lib/python3.8/http/client.py", line 307, in begin
    version, status, reason = self._read_status()
  File "/opt/py/lib/python3.8/http/client.py", line 268, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/opt/py/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/py/ve1/lib/python3.8/site-packages/elasticsearch/connection/http_urllib3.py", line 245, in perform_request
    response = self.pool.urlopen(
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connectionpool.py", line 637, in urlopen
    retries = retries.increment(method, url, error=e, _pool=self,
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/util/retry.py", line 343, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/packages/six.py", line 686, in reraise
    raise value
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connectionpool.py", line 597, in urlopen
    httplib_response = self._make_request(conn, method, url,
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connectionpool.py", line 386, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connectionpool.py", line 306, in _raise_timeout
    raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='192.168.83.118', port=19200): Read timed out. (read timeout=60)
ConnectionRefusedError:尝试创建连接被拒绝
Traceback (most recent call last):
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connection.py", line 158, in _new_conn
    conn = connection.create_connection(
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/util/connection.py", line 80, in create_connection
    raise err
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/util/connection.py", line 70, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/py/ve1/lib/python3.8/site-packages/elasticsearch/connection/http_urllib3.py", line 245, in perform_request
    response = self.pool.urlopen(
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connectionpool.py", line 637, in urlopen
    retries = retries.increment(method, url, error=e, _pool=self,
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/util/retry.py", line 343, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/packages/six.py", line 686, in reraise
    raise value
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connectionpool.py", line 597, in urlopen
    httplib_response = self._make_request(conn, method, url,
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connectionpool.py", line 354, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/opt/py/lib/python3.8/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/opt/py/lib/python3.8/http/client.py", line 1301, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/opt/py/lib/python3.8/http/client.py", line 1250, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/opt/py/lib/python3.8/http/client.py", line 1010, in _send_output
    self.send(msg)
  File "/opt/py/lib/python3.8/http/client.py", line 950, in send
    self.connect()
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connection.py", line 181, in connect
    conn = self._new_conn()
  File "/opt/py/ve1/lib/python3.8/site-packages/urllib3/connection.py", line 167, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fa65a586340>: Failed to establish a new connection: [Errno 111] Connection refused

已知问题原因

  1. ES 集群中某个节点的 ES 主进程被杀(由于服务器内存不足导致),导致该节点 ES 重新拉起,报 “尝试创建连接被拒绝”;
  2. ES 集群中某个节点的服务器内存不足,导致该节点 ES 的 cache 被清空,ES 响应请求速度下降,报 “等待源端服务器响应超时”。

问题定位方法

1. 通过查看计算日志,统计这两类问题频繁出现的时间区间及 ES 集群节点

“尝试创建连接被拒绝” 通常集中在 1 - 2 分钟,“等待源端服务器响应超时” 通常集中在 10 分钟以内

2. 通过 Grafana 监控,检查问题时间段内,ES 集群各节点间的网络连接是否正常

排除节点间网络连接问题的影响(需要注意,服务器内存不足,也可能导致服务器暂时无法响应监控的请求,显示丢包率提高)

3. 通过 Grafana 监控,检查在问题时间段内,ES 集群各节点中 ES 容器的监控指标是否出现显著变化

ES 容器的 rss 占用是否显著下降:因为 ES 会为自身分配一定数量的内存作为缓存,并将其保留在 RSS 中,所以通常来说 ES 的 RSS 为相当稳定,如果出现显著下降,则说明 ES 主进程可能被杀掉过

ES 容器的 cache 占用是否显著下降:因为如果服务器内存不足,则会优先清理各个容器的 cache,所以如果 ES 的 cache 显著下降,则说明可能出现过服务器内存严重不足的情况

ES 容器的磁盘读取是否显著增加:因为若 ES 进程被重新拉起,则需要从磁盘中读取数据,所以如磁盘读取有显著增加,则说明 ES 主进程可能被杀掉过。

4. 通过 Grafana 监控,检查在问题时间段内,ES 集群各节点中 ES 的监控指标是否发生显著变化:

各类指标在问题时段内是否中断:若 ES 主进程被杀或因各种原因无法响应,则会导致 ES 监控中断,说明中断期间该 ES 节点出现问题

在问题时间段后,ES 的各类缓存是否被重置为 0:如 ES 主进程被杀或 ES 缓存被清理,则会导致 ES 各类缓存被置为 0

5. 通过 Grafana 监控,检查在问题时间段内,ES 集群各节点的服务器内存是否出现显著变化:

在问题时间段内,服务器空闲内存(free)和缓存(cache)是否显著下降,并在问题时段结束后迅速回升

6. 通过 Linux 内核 message 日志,检查是否出现 OOM Killer 杀掉进程的情况

如果 OOM Killer 杀掉了非 ES 进程,则在杀掉前后,可能因为 ES 容器内存不足,缓存被严重清理,导致请求响应超时

Jul 20 17:30:28 node118 kernel: Out of memory: Kill process 21434 (python) score 396 or sacrifice child
Jul 20 17:30:28 node118 kernel: Killed process 21434 (python) total-vm:63743040kB, anon-rss:57695916kB, file-rss:0kB, shmem-rss:1802304kB

如果 OOM Killer 杀掉了 ES 进程,那么在杀掉后,必然导致 ES 无法响应,连接请求被拒绝文章来源地址https://www.toymoban.com/news/detail-756382.html

Jul 27 16:36:08 node119 kernel: Out of memory: Kill process 29074 (elasticsearch[n) score 270 or sacrifice child
Jul 27 16:36:08 node119 kernel: Killed process 29074 (elasticsearch[n) total-vm:241520696kB, anon-rss:35248156kB, file-rss:173912kB, shmem-rss:0kB

问题解决方法

  1. 减少其他容器的内存占用
  2. 配置其他容器的内存上限

到了这里,关于ElasticSearch|ES 连接超时及创建连接失败问题定位过程记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • github连接超时、提交(push)代码失败解决方案

    如果提示: Hi defnngj You’ve successfully authenticated, but GitHub does not provide shell access . 说明你连接成功了 打开 https://github.com/ ,在设置中添加密钥 测试成功就可以push code了.

    2024年02月12日
    浏览(66)
  • FileZilla仅开放21端口导致连接超时错误:读取目录列表失败

    条件:         部署FileZilla Server后,在防火墙内打开21端口入站。         另一台机器使用FileZilla连接服务器,卡在如下:                 状态:    连接建立,等待欢迎消息...                 状态:    初始化 TLS 中...                 状态:    

    2024年02月05日
    浏览(41)
  • ElasticSearch 创建索引超时(ReadTimeoutError)

    在 Python 中调用 client.indices.create 来创建 ElasticSearch 索引时,报如下错误: 在查阅网络资料时,一开始以为是字面意思上的连接超时问题,但调大 timeout 参数也一样报错,而且之前用相同方法创建类似索引时并未出现该问题。 最后,受博文(https://blog.csdn.net/ckq707718837/article

    2024年04月22日
    浏览(76)
  • 在GitHub上 git clone代码失败,显示:“ithub.com port 443: 连接超时“

    有时候,使用git clone 指令下载代码时显示显示:“ithub.com port 443: 连接超时”。 可以使用gitclone加速,官网URL:https://gitclone.com/ 官方描述,有下面三种方式可以使用: 本人亲测第一种方法,下载Yolov5,速度飞起!!!!! 打个比方,原始方法: 替换URL后: 没一会就下好了

    2024年02月11日
    浏览(58)
  • docker pip下载依赖超时或失败问题解决

    Docker容器使用 pip 安装Python库时超时,可能是由于多种原因。以下是一些建议和解决方法: 使用国内镜像源 : 如果你位于中国,可以尝试更换到国内的镜像源。例如,可以使用阿里云、腾讯云、清华大学提供的镜像。 你可以在Dockerfile中添加以下命令来更改pip源: 或者在安装

    2024年02月04日
    浏览(46)
  • 解决Linux系统git clone失败或超时问题

    使用git clone常常不成功,以下是解决办法,亲测有效 1. 修改hosts 首先使用 sudo vim /etc/hosts 进入hosts,此时是查看模式 按下 i 进入编辑模式,此时需要插入两个IP地址 使用 https://www.ipaddress.com/ 查找两个地址: 然后将地址和名字粘贴进hosts文件中:  2. 重启网络和服务器 完成

    2024年02月05日
    浏览(62)
  • es如何解决timeout超时30秒问题

    Timeouts | Java REST Client [7.12] | Elastic 我们使用es的相关client查询es时常会发现此报错,大概也知道是因为操作时间过长达到某个默认阈值30s才返回的报错,那么如何解决呢? 原本我们使用RestHighLevelClient操作es查询的时候,只顾构造SearchSourceBuilder,RequestOptions相关配置没有用,全

    2024年02月11日
    浏览(38)
  • 微信小程序真机调试网络请求失败或超时的问题

      在使用uniapp开发微信小程序时,开发者工具的模拟器可以正常请求。但是当使用真机调试时会发现,请求已发起,但是控制台一片空白。 过了一会儿就会报错,请求超时。 检查代码和网络连接都正常,当然也勾选了不校验合法域名。 网上搜了半天,没发现相同的问题。

    2024年02月03日
    浏览(113)
  • Android 原生定位开发(解决个别手机定位失败问题)

    在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便。定位一般分为三种发方案:即GPS定位、Google网络定位以及基站定位。 本文分别介绍GPS定位、以及基于Google的网络Wifi定位的详细步骤,(小米手机获取位置信息locationManager.getLastK

    2024年02月06日
    浏览(50)
  • Linux中启动网卡时报错:“错误:连接激活失败:IP 配置无法保留(无可用地址、超时等)”的解决办法;用Xshell5如何连接虚拟机?

    1.启动虚机后,用Xshell5连接虚拟机,首先要查询IP,查询前要启动网卡,使用启动网卡命令:ifup ens160,这时候报错了,如下: [root@linuxprobe ~]# ifup ens160 错误:连接激活失败:IP 配置无法保留(无可用地址、超时等) 2.win+r,输入service.msc,改为启动。    3.重新启动网卡,就可

    2024年02月11日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包