即使是不成熟的尝试,也胜于胎死腹中的策略。

es查询引起熔断问题,怎么解决。

Elasticsearch | 作者 melo | 发布于2020年09月08日 | 阅读数:3214

阿里云es7.4
 三个主节点,三个hot节点(4c32g),两个warm节点(2c8g)。
 
warn节点上有读写操作,我现在查询的索引在hot节点上,导致warm节点触发熔断。
elasticsearch.exceptions.TransportError: TransportError(429, 'circuit_breaking_exception', '[parent] Data too large, data for [<transport_request>] would be [3582190054/3.3gb], which is larger than the limit of [3407134720/3.1gb], real usage: [3582187656/3.3gb], new bytes reserved: [2398/2.3kb], usages [request=0/0b, fielddata=73393/71.6kb, in_flight_requests=4560/4.4kb, accounting=207542941/197.9mb]')

GET item_inercept/_search
{
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"ts": {
"gte": 1599321600,
"lt": 1599408000
}
}
}
]
}
},
"aggs": {
"cid": {
"terms": {
"field": "token.cid.keyword",
"size": 200,
"order": {
"_count": "desc"
},
"execution_hint": "map"
},
"aggs": {
"active": {
"filter": {
"bool": {
"must": [],
"filter": [],
"should": [],
"must_not": [],
"minimum_should_match": 0
}
},
"aggs": {
"active": {
"cardinality": {
"field": "token.number.keyword",
"precision_threshold": 40000
}
}
}
},
"auth_named": {
"filter": {
"bool": {
"filter": [
{
"term": {
"authed_name": true
}
}
]
}
},
"aggs": {
"auth_named": {
"cardinality": {
"field": "token.number.keyword",
"precision_threshold": 40000
}
}
}
},
"item_apply": {
"terms": {
"field": "item_apply.keyword",
"size": 200,
"order": {
"_count": "desc"
},
"execution_hint": "map"
},
"aggs": {
"item_apply": {
"cardinality": {
"field": "token.number.keyword",
"precision_threshold": 40000
}
}
}
}
}
}
}
}
查询语句如上,我现在的问题是,为什么warm节点会触发熔断,阿里云es的查询请求会落在warm节点上吗?
已邀请:

shwtz - 学物理想做演员的IT男

赞同来自:

jvm heap太小了,超过了查询缓存的最大值了吧。
 
无论是hot 还是 warm , 只要你查询的索引,有分片分布在这些节点上,就会触发该节点这些分片的查询
 

melo

赞同来自:

当时查询的索引分片都在hot节点上,尝试了三次,都出现了warm节点的熔断。

要回复问题请先登录注册