Python CGI的Elasticsearch circuit_breaking_exception问题(已解决)

问题描述 投票:0回答:1

我正在Apache服务器中使用带有Python 3 CGI脚本的Elasticsearch实例。 Web应用程序通常可以正常运行,但是有时,通过某些查询,我会收到此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'))

我已尝试将indexs.breaker.fielddata.limit增加到75%,并且错误发生的频率降低了,但仍然存在。我只有一个副本,文档计数为8061。

我应该增加字段数据限制还是尝试其他方法更好?

先谢谢您。

python-3.x elasticsearch cgi
1个回答
1
投票

1 GB HEAP大小对于Elasticsearch非常小。尝试增加物理RAM和HEAP大小。

© www.soinside.com 2019 - 2024. All rights reserved.