Проблема:
После обновления с ES-5.4 до ES-7.2 я начал получать ошибки «слишком большие данные» при попытке написать параллельный массовый запрос (или / и поисковые запросы) из моего многопоточного приложения Java (с использованием клиента elasticsearch-rest-high-level-client-7.2.0.jar
java) в кластер ES из 2-4 узлов.
Моя конфигурация ES:
Elasticsearch version: 7.2
custom configuration in elasticsearch.yml:
thread_pool.search.queue_size = 20000
thread_pool.write.queue_size = 500
I use only the default 7.x circuit-breaker values, such as:
indices.breaker.total.limit = 95%
indices.breaker.total.use_real_memory = true
network.breaker.inflight_requests.limit = 100%
network.breaker.inflight_requests.overhead = 2
Ошибка изasticsearch.log:
{
"error": {
"root_cause": [
{
"type": "circuit_breaking_exception",
"reason": "[parent] Data too large, data for [<http_request>] would be [3144831050/2.9gb], which is larger than the limit of [3060164198/2.8gb], real usage: [3144829848/2.9gb], new bytes reserved: [1202/1.1kb]",
"bytes_wanted": 3144831050,
"bytes_limit": 3060164198,
"durability": "PERMANENT"
}
],
"type": "circuit_breaking_exception",
"reason": "[parent] Data too large, data for [<http_request>] would be [3144831050/2.9gb], which is larger than the limit of [3060164198/2.8gb], real usage: [3144829848/2.9gb], new bytes reserved: [1202/1.1kb]",
"bytes_wanted": 3144831050,
"bytes_limit": 3060164198,
"durability": "PERMANENT"
},
"status": 429
}
Мысли:
У меня нет времени, чтобы точно указать источник проблема.
При использовании узлов кластера ES с размером кучи <= 8 ГБ (на виртуальной машине <= 16 ГБ) проблема становится очень заметной, поэтому одно из очевидных решений заключается в увеличении памяти узлов. <br>Но я чувствую, что увеличение памяти только скрывает проблему.
Вопросы:
Я хотел бы понять, какой сценарий ios мог привести к этой ошибке?
и какие действия можно взять, чтобы правильно с ним справиться?
(изменить значения выключателя, изменить конфигурацию es.yml, изменить e / ограничить мои запросы ES)