Python CGI 的 Elasticsearch circuit_breaking_exception 问题
Elasticsearch circuit_breaking_exception problem with Python CGI
我在 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'))
我已尝试将 indices.breaker.fielddata.limit 增加到 75%,错误发生的频率降低了,但仍然 persists.I 只有一个副本,文档数为 8061。
我应该增加更多的字段数据限制还是尝试其他方法更好?
提前致谢。
1 GB 的 HEAP 大小对于 elasticsearch 来说非常小。尝试增加物理 RAM 和 HEAP 大小。
我在 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'))
我已尝试将 indices.breaker.fielddata.limit 增加到 75%,错误发生的频率降低了,但仍然 persists.I 只有一个副本,文档数为 8061。
我应该增加更多的字段数据限制还是尝试其他方法更好?
提前致谢。
1 GB 的 HEAP 大小对于 elasticsearch 来说非常小。尝试增加物理 RAM 和 HEAP 大小。