Проблема Elasticsearch circuit_breaking_exception с Python CGI - PullRequest
0 голосов
/ 08 февраля 2020

Я использую экземпляр Elasticsearch с Python 3 CGI Script на сервере Apache. Веб-приложение в целом работает нормально, но иногда при определенных запросах я получаю исключение Python:

TransportError: TransportError(429, 'circuit_breaking_exception', '[parent] Data too large, data for [<http_request>] would be [987816208/942mb], which is larger than the limit of [986932838/941.2mb], real usage: [987816208/942mb], new bytes reserved: [0/0b]')

Это не всегда происходит с одним и тем же запросом. Иногда это работает нормально, и я получаю результат, иногда это не удается.

Код Python:

#!/usr/bin/python3

import cgitb
import cgi
import re
from elasticsearch import Elasticsearch
from datetime import datetime
import json
import io
import sys

def enc_print(string='', encoding='utf8'):
    sys.stdout.buffer.write(string.encode(encoding))

es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

cgitb.enable(display=0, logdir='/home/myname/Desktop/')
form = cgi.FieldStorage() 

if form.getvalue('dictionary') == 'One':
    dictionary = 'one'
elif form.getvalue('dictionary') == 'Two':
    dictionary = 'two'
else:
    dictionary = 'three'

res = es.get(index=dictionary, doc_type='word', id=form.getvalue('id'))

Я пытался увеличить indices.breaker.fielddata.limit до 75%, и ошибка встречается реже, но все еще сохраняется. У меня есть только одна реплика, и число документов составляет 8061.

Должен ли я увеличить еще больше предел полевых данных или лучше попробовать что-то еще?

Заранее спасибо.

1 Ответ

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

1 гигабайт Размер HEAP очень мал для эластичного поиска. попробуйте увеличить физическую память и размер кучи.

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