ALM-43201 Elasticsearch堆内存使用率超过阈值
告警解释
系统每60秒周期性检测Elasticsearch堆内存使用率,当Elasticsearch堆内存使用率超出阈值范围时,如果连续超过阈值的次数达到设置的平滑次数,就会产生该告警。
平滑次数为1,Elasticsearch堆内存使用率小于或等于阈值时,告警恢复。平滑次数大于1,Elasticsearch堆内存使用率小于或等于阈值的90%时,告警恢复。
告警属性
告警ID |
告警级别 |
告警类型 |
业务类型 |
是否可自动清除 |
---|---|---|---|---|
43201 |
重要(默认阈值为90%) 紧急(默认阈值为95%) |
业务质量告警 |
Elasticsearch |
是 |
告警参数
类别 |
参数名称 |
参数含义 |
---|---|---|
定位信息 |
来源 |
产生告警的集群名称。 |
服务名 |
产生告警的服务名称。 |
|
角色名 |
产生告警的角色名称。 |
|
主机名 |
产生告警的主机名。 |
|
附加信息 |
Trigger Condition |
系统当前指标取值满足自定义的告警设置条件。 |
对系统的影响
Elasticsearch堆内存使用率过高,可能会影响Elasticsearch索引数据的读写性能变慢,严重情况下可能会导致进程重启。
可能原因
Elasticsearch配置的堆内存不足。
处理步骤
清除无效索引。
- 检查Elasticsearch集群是否是安全模式。
- 配置安全模式下使用curl命令的环境。
- 以root用户登录Elasticsearch所在的任意主机。
- 执行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命令同上。
- 执行curl -XDELETE --tlsv1.2 --negotiate -k -v -u : 'https://ip:httpport/indexname',确认删除无用的index。
删除文件为高危操作,在执行操作前请务必确认对应文件是否不再需要。
查看Elasticsearch JVM内存配置并进行调整。
- 在FusionInsight Manager界面,选择“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 配置 > 全部配置”。
- 在配置页面右上方搜索框输入“GC_OPTS”,单击按钮列出所有实例的“GC_OPTS”参数。
- 选中需要修改“GC_OPTS”值的实例,查看该实例值配置框后是否有查看差异化配置图标。
- 单击,在弹出的对话框中单击右侧单击确定保存。
- 将“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”,可参考如下进行分配。
例如:某机器内存大小128GB,该机器上安装了3个Elasticsearch实例,则GC_OPTS参数应为(128GB*0.5)/3=21GB,并确保此时JVM指针压缩已开启。
- 建议将50%的内存留给Lucence缓存使用,50%的内存分配给Elasticsearch,对于大内存机器内存分配推荐30GB,不超过31GB,并确保JVM开启了指针压缩,可通过如下命令查询JVM的指针压缩是否开启:
- 修改完成后,单击左上方“保存”,在弹出的对话框中单击“确定”保存配置。
- 在FusionInsight Manager界面,选择“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 实例”,勾选配置状态为“配置过期”的实例,重启受影响的Elasticsearch实例。
- 检查本警告是否恢复。
- 是,处理完毕。
- 否,执行14。
收集故障信息。
告警清除
此告警修复后,系统会自动清除此告警,无需手工清除。
参考信息
不涉及。