Понимание упругого поиска circuit_breaking_exception - PullRequest
1 голос
/ 08 февраля 2020

Я пытаюсь выяснить, почему я получаю эту ошибку при индексации документа из веб-приложения python.

Документом в этом случае является закодированная в base64 строка файла размером 10877 КБ.

Я отправляю его в свое веб-приложение, которое затем отправляет его черезasticsearch.py ​​в мой экземпляр elasti c.

Мой экземпляр elasti c выдает ошибку:

    TransportError(429, 'circuit_breaking_exception', '[parent] Data                         
    too large, data for [<http_request>] would be 
    [1031753160/983.9mb], which is larger than the limit of 
    [986932838/941.2mb], real usage: [1002052432/955.6mb], new bytes 
    reserved: [29700728/28.3mb], usages [request=0/0b, 
    fielddata=0/0b, in_flight_requests=29700728/28.3mb, 
    accounting=202042/197.3kb]')

Я пытаюсь понять, почему мой файл размером 10877 КБ имеет размер 983 МБ, как сообщает elasti c.

Я понимаю, что увеличение максимального размера кучи JVM может позволить мне отправлять большие файлы, но мне больше интересно, почему кажется, что размер запроса в 10 раз больше того, что я ожидаю.

1 Ответ

2 голосов
/ 08 февраля 2020

Давайте посмотрим, что у нас здесь, шаг за шагом:

[parent] Data too large, data for [<http_request>]

дает имя выключателя

would be [1031753160/983.9mb], 

говорит, как будет выглядеть размер кучи, когда запрос будет выполнен

which is larger than the limit of [986932838/941.2mb],

говорит нам текущую настройку выключателя выше

real usage: [1002052432/955.6mb],

это реальное использование кучи

new bytes reserved: [29700728/28.3mb],

на самом деле оценка того, как повлияет запрос (размер структур данных, которые необходимо создать для обработки запроса). Ваш файл ~ 10 МБ, вероятно, будет занимать 28,3 МБ.

usages [
    request=0/0b, 
    fielddata=0/0b,
    in_flight_requests=29700728/28.3mb, 
    accounting=202042/197.3kb
]

Эта последняя строка сообщает нам, как вычисляется эстетика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...