你不会是程序猿吧?

ES集群总是会发生熔断,且已经做过扩容,请教下大佬

Elasticsearch | 作者 Dalon | 发布于2022年09月15日 | 阅读数:1906

目前生产三台集群31G,总是会报错。org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=circuit_breaking_exception, reason=[parent] Data too large, data for [<http_request>] would be [31638118802/29.4gb], which is larger than the limit of [31621696716/29.4gb], real usage: [31638116088/29.4gb], new bytes reserved: [2714/2.6kb], usages [request=0/0b, fielddata=443250022/422.7mb, in_flight_requests=2714/2.6kb, accounting=1896604/1.8mb]]
at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:177) ~[elasticsearch-7.8.0.jar!/:7.8.0]
at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:1897) ~[elasticsearch-rest-high-level-client-7.8.0.jar!/:7.8.0]
at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:1867) ~[elasticsearch-rest-high-level-client-7.8.0.jar!/:7.8.0]
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1624) ~[elasticsearch-rest-high-level-client-7.8.0.jar!/:7.8.0]
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1581) ~[elasticsearch-rest-high-level-client-7.8.0.jar!/:7.8.0]
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1551) ~[elasticsearch-rest-high-level-client-7.8.0.jar!/:7.8
已邀请:

zmc - ES PAAS、JuiceFS

赞同来自: nofearinmyheat [已注销]

熔断的情况有很多,你先看看请求少(或者没请求)的时候heap稳定在多少(数据量大占的内存也会多,FST(niofs)、_id、缓存等),然后再分析读写行为

Charele - Cisco4321

赞同来自: [已注销]

data for [<http_request>]这说明你是在执行http请求时内存不够了。
 
fielddata=443250022/422.7mb,
 
如果你的执行是java程序,可以catch到熔断异常(可能被包在别的异常里面,但可以分析出来)的时候,
然后试着在程序里清一下fielddata缓存,再执行请求
 
 

nofearinmyheat - 新时代农民工

赞同来自: [已注销]

你的es实例运行内存多少  稳定时heap使用率就高的话  应该调大运行内存

Dalon

赞同来自:

我理解是这样,比如我机器总内存是31G,parent熔断器设置了95%(29.45G),我集群正常的head在9-23G左右来回晃动,平均是13G。按照常理来说,可能ES会在23G的时候自动的GC一次,但是有可能这时候突然涌入了一波流量,瞬时就冲破了集群总内存29.5G,这时候就会触发熔断。但是往往这种情况不会持续太长时间,大概是在30s-60s之间。我理解是ES执行GC的间隙吧。但是我的ES版本是7.8.0,使用的G1回收机制。JDK 是AdoptOpenJDK 版本 14.0.1

tacsklet - 公司有用到es

赞同来自:

发生熔断一般业务的问题可能性高一些,建议先排查平时业务使用方式,缓存加载是否合理,如果合理的话确实需要加大内存了。
G1可以调整参数优化GC时间的,可以看看GC执行时间是否比较长,对G1进行参数调优。

要回复问题请先登录注册