暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Elasticsearch Circuit BreakerException异常分析

ItTalk 2021-07-10
1134

现象:

今日观察es的使用,发现有如下报错:

分析:

1.看报错的类型为一个断路器的异常,进一步通过官网了解,该报错是es为了防止内存OOM,出现这个原因是因为内存不足引起。详情见:
https://www.elastic.co/guide/en/elasticsearch/reference/current/circuit-breaker.html#parent-circuit-breaker
2.进一步分析内存不足的原因,首先获取到es是三个数据节点机器的配置如下:

3.进一步分析es对应的heap size设置,GET _nodes/jvm来查看实际的内存分配情况:

参考断路器异常描述:

indices.breaker.total.use_real_memory我们没有配置,因此默认为true。这时indices.breaker.total.limit的默认值为heap的95% 1662386176 * .0.95 = 1579266867这与报错的结果相吻合了
4.由于接口是访问group_profile索引引起,进一步分析
group_profile(group_profile_20210127的一个别名)这个索引。分了三个分片,总大小在10g:

5.发现每分片的数据在3g左右,已经大大的高于当前节点的heap大小。ES会大量使用内存,如果出现重度搜索的情况,内存的使用就会高于断路器的水位。则会抛出circuit_breaking_exception异常。

解决:

通过扩容es各节点的内存,扩容后再没有出现上述的报错问题。

文章转载自ItTalk,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论