【Elasticsearch】ES内存满问题排查思路

559 篇文章 547 订阅 ¥79.90 ¥99.00

在这里插入图片描述

1.概述

转载:https://bbs.huaweicloud.com/forum/thread-69710-1-1.html

2.问题排查思路

  • 场景1 内存参数配置不合理。

  • 场景2 查询返回的size过大。

  • 场景3 深度翻页查询。

  • 场景4 聚合的数据量过大、聚合的结果集太大。

  • 场景5 全表扫描的查询:一次查询涉及的索引和分片数过多。

  • 场景6 bulk提交的请求过大。

  • 场景7 节点存在大量的segment。

3.问题排查步骤

  1. 登录Manage页面,检查服务级别和实例级别的参数设置,确认其GC_OPTS参数设置为30G,且-Xms的值和-Xmx参数值相同。

  2. 开启ES的慢查询日志记录。

  3. 检查记录的慢查询日志,关注时间特别长的以及靠近故障时间点的日志记录。主要关注的关键字为:

场景

关键字

处理建议

查询返回的size过大

max_result_window,默认值为10000

ES适合Top N的查询,不适合做全量的查询。都需要改为scroll或search_after进行查询


深度翻页查询

{

“from”:5000, //from:定义从哪里开始拿数据

“size”:100 //size:定义一共拿多少条数据

}

聚合的数据量过大、聚合的结果集太大

aggregations + size

修改请求中返回的size的大小限制。

全表扫描的查询:一次查询涉及的索引和分片数过多

GET /_all/_search

{

"query": {

"match_all": {}

}

}

建议按时间周期进行查询,查询周期较长时,进行分批查询

  1. 检查thread_pool的使用,是否存在大量的bulk排队情况,和客户确认bulk请求大小,建议为5mb-16mb。

  2. 检查segment的个数,以及sement占用的内存的大小,对于历史的无数据写入的索引,建议进行合并或老化。

  3. 收集jmap -histio 和 heapdump进行分析。

  jmap -histo <pid>
  jmap -dump:format=b,file=/tmp/esdump.hporf <pid>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Elasticsearch内存分析,我们可以从以下几个方面进行考虑: 1. JVM 堆内存分析:Elasticsearch 是基于 Java 开发的,它使用 Java 虚拟机(JVM)管理内存。通过监控和分析 JVM 的堆内存使用情况,可以了解 Elasticsearch内存中存储的数据量、缓存的使用情况等。可以使用工具如 VisualVM、jstat、jmap 等来获取堆内存信息并进行分析。 2. 分片和副本的内存使用:Elasticsearch 将数据分成多个分片,并在不同的节点上存储副本。每个分片和副本都会占用一定的内存空间。通过监控每个节点上的分片和副本数量,可以了解 Elasticsearch 集群中的内存使用情况。 3. 缓存的使用情况:Elasticsearch 使用了多种缓存机制来提高查询性能,如字段数据缓存、过滤器缓存、请求缓存等。通过监控和分析缓存的命中率、缓存大小等指标,可以评估缓存的使用效果和是否需要调整缓存配置。 4. 索引和搜索的内存开销:Elasticsearch内存中维护了索引结构和搜索相关的数据结构,如倒排索引、过滤器、聚合缓存等。通过监控和分析索引和搜索的内存开销,可以了解 Elasticsearch 在处理索引和搜索时的内存使用情况。 5. 内存溢出和泄漏问题:如果 Elasticsearch 集群中出现内存溢出或内存泄漏问题,需要进行详细的分析来确定具体原因。可以通过查看日志、分析堆转储快照(heap dump)等方式来进行故障排查。 需要注意的是,进行内存分析时应该结合实际业务场景和负载情况来进行评估和优化。每个 Elasticsearch 集群的配置和使用方式各有不同,因此具体的内存优化策略需根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值