【问题标题】:Understanding elasticsearch circuit_breaking_exception了解elasticsearch circuit_breaking_exception
【发布时间】:2020-03-17 01:52:37
【问题描述】:

我试图弄清楚为什么在从 python 网络应用程序索引文档时会收到此错误。

本例中的文档是大小为 10877 KB 的文件的 base64 编码字符串。

我将它发布到我的网络应用程序,然后通过 elasticsearch.py​​ 将它发布到我的弹性实例。

我的弹性实例抛出错误:

    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 KB 文件最终大小为 983mb,正如 elastic 报告的那样。

我知道增加 JVM 最大堆大小可能允许我发送更大的文件,但我更想知道为什么请求大小是我预期大小的 10 倍。

【问题讨论】:

    标签: http elasticsearch flask


    【解决方案1】:

    让我们一步一步看看这里有什么:

    [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],
    

    实际上是一个估计,请求将产生什么影响(需要创建以处理请求的数据结构的大小)。您的 ~10MB 文件可能会消耗 28.3MB。

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

    最后一行告诉我们估计是如何计算的。

    【讨论】:

    • 感谢您的解释!
    • 当然,您愿意接受答案,以便将此问题标记为已回答以供将来搜索吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2013-03-03
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多