文档首页/ MapReduce服务 MRS/ 用户指南(安卡拉区域)/ 告警参考/ ALM-43201 Elasticsearch堆内存使用率超过阈值
更新时间:2024-11-29 GMT+08:00

ALM-43201 Elasticsearch堆内存使用率超过阈值

告警解释

系统每60秒周期性检测Elasticsearch堆内存使用率,当Elasticsearch堆内存使用率超出阈值范围时,如果连续超过阈值的次数达到设置的平滑次数,就会产生该告警。

平滑次数为1,Elasticsearch堆内存使用率小于或等于阈值时,告警恢复。平滑次数大于1,Elasticsearch堆内存使用率小于或等于阈值的90%时,告警恢复。

告警属性

告警ID

告警级别

告警类型

业务类型

是否可自动清除

43201

重要(默认阈值为90%)

紧急(默认阈值为95%)

业务质量告警

Elasticsearch

告警参数

类别

参数名称

参数含义

定位信息

来源

产生告警的集群名称。

服务名

产生告警的服务名称。

角色名

产生告警的角色名称。

主机名

产生告警的主机名。

附加信息

Trigger Condition

系统当前指标取值满足自定义的告警设置条件。

对系统的影响

Elasticsearch堆内存使用率过高,可能会影响Elasticsearch索引数据的读写性能变慢,严重情况下可能会导致进程重启。

可能原因

Elasticsearch配置的堆内存不足。

处理步骤

清除无效索引。

  1. 检查Elasticsearch集群是否是安全模式。

    在FusionInsight Manager首页,选择“集群 > 待操作集群的名称 > 服务 > Elasticsearch”,进入Elasticsearch概述页面,单击“配置”,进入配置页面。在配置页面右上方搜索框输入“ELASTICSEARCH_SECURITY_ENABLE”单击,确认该参数是否可以查询到且参数值为“true”。
    • 是,执行2
    • 否,执行3

  2. 配置安全模式下使用curl命令的环境。
  3. root用户登录Elasticsearch所在的任意主机
  4. 执行curl -XGET --tlsv1.2 --negotiate -k -v -u : 'https://ip:httpport/_cat/indices?v'命令查询当前集群中存在的索引详情。

    • “ip”:Elasticsearch集群中任意节点的IP。
    • “httpport”:Elasticsearch实例的HTTP端口,该端口值可以在FusionInsight Manager界面的Elasticsearch服务下,选择该实例的“配置”,选择“全部配置”右上角搜索参数“SERVER_PORT”获取。
    • 如果是普通模式,删除安全认证参数“--tlsv1.2 --negotiate -k -v -u :”,并将“https”修改为“http”。
    • 以下curl命令同上。

  5. 执行curl -XDELETE --tlsv1.2 --negotiate -k -v -u : 'https://ip:httpport/indexname',确认删除无用的index。

    删除文件为高危操作,在执行操作前请务必确认对应文件是否不再需要。

查看Elasticsearch JVM内存配置并进行调整。

  1. 在FusionInsight Manager界面,选择“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 配置 > 全部配置”。
  2. 在配置页面右上方搜索框输入“GC_OPTS”,单击按钮列出所有实例的“GC_OPTS”参数。
  1. 选中需要修改“GC_OPTS”值的实例,查看该实例值配置框后是否有查看差异化配置图标。

    • 是,执行9
    • 否,执行10

  2. 单击,在弹出的对话框中单击右侧单击确定保存。
  3. 将“GC_OPTS”参数值中的“-Xms”和“-Xmx”的值根据如下说明进行调整。

    Elasticsearch实例的GC参数配置建议:

    • 建议将50%的内存留给Lucence缓存使用,50%的内存分配给Elasticsearch,对于大内存机器内存分配推荐30GB,不超过31GB,并确保JVM开启了指针压缩,可通过如下命令查询JVM的指针压缩是否开启:

      java -server -Xms28G -Xmx28G -XX:+UseConcMarkSweepGC -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode -version

      若返回的Compressed Oops mode是Zero based模式,则说明JVM指针压缩已开启,可增加所分配的内存大小:将28G调整为29G,再次查看指针压缩是否开启,直至分配的内存值是使指针压缩开启的最大值。

      若返回的Compressed Oops mode是Non-zero based模式,则说明JVM指针压缩未开启,需要减小所分配的内存大小:将28GB调整为27GB,再次查看指针压缩是否开启,直至分配的内存值是使指针压缩开启的最大值。

    • 建议“-Xms”和“-Xmx”设置成相同的值,这样可以避免JVM动态调整堆内存大小时影响性能。
    • 如果“机器内存的50%<实例数*30GB”,可参考如下进行分配。

      实例内存=(机器内存大小*0.5)/该机器上的实例数。

      例如:某机器内存大小128GB,该机器上安装了3个Elasticsearch实例,则GC_OPTS参数应为(128GB*0.5)/3=21GB,并确保此时JVM指针压缩已开启。

  4. 修改完成后,单击左上方“保存”,在弹出的对话框中单击“确定”保存配置。
  5. 在FusionInsight Manager界面,选择“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 实例”,勾选配置状态为“配置过期”的实例,重启受影响的Elasticsearch实例。
  6. 检查本警告是否恢复。

    • 是,处理完毕。
    • 否,执行14

收集故障信息。

  1. 在FusionInsight Manager界面,选择“运维 > 日志 > 下载”。
  2. 在“服务”中勾选待操作集群的“Elasticsearch”。
  3. 单击右上角的设置日志收集的“开始时间”和“结束时间”分别为告警产生时间的前后10分钟,单击“下载”。
  4. 请联系运维人员,并发送已收集的故障日志信息。

告警清除

此告警修复后,系统会自动清除此告警,无需手工清除。

参考信息

不涉及。