首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"[circuit_breaking_exception] [父]“数据太大,用于"[<http_request>]”的数据将是错误的

"[circuit_breaking_exception] [父]“数据太大,用于"[<http_request>]”的数据将是错误的
EN

Stack Overflow用户
提问于 2020-05-18 13:31:32
回答 3查看 49.9K关注 0票数 24

在顺利地工作了10个多月之后,我在执行简单的搜索查询时,突然在生产上出现了这个错误。

代码语言:javascript
复制
{
  "error" : {
    "root_cause" : [
      {
        "type" : "circuit_breaking_exception",
        "reason" : "[parent] Data too large, data for [<http_request>] would be [745522124/710.9mb], which is larger than the limit of [745517875/710.9mb]",
        "bytes_wanted" : 745522124,
        "bytes_limit" : 745517875
      }
    ],
    "type" : "circuit_breaking_exception",
    "reason" : "[parent] Data too large, data for [<http_request>] would be [745522124/710.9mb], which is larger than the limit of [745517875/710.9mb]",
    "bytes_wanted" : 745522124,
    "bytes_limit" : 745517875
  },
  "status" : 503
}

最初,当我得到这个circuit_breaking_exception错误时,我是在执行简单的术语查询时得到这个错误的,为了调试这个错误,我在elasticsearch集群上尝试了_cat/health查询,但是仍然是相同的错误,即使是最简单的查询localhost:9200也给出了相同的错误--不确定集群突然发生了什么。她是我的断路器状态:

代码语言:javascript
复制
"breakers" : {
        "request" : {
          "limit_size_in_bytes" : 639015321,
          "limit_size" : "609.4mb",
          "estimated_size_in_bytes" : 0,
          "estimated_size" : "0b",
          "overhead" : 1.0,
          "tripped" : 0
        },
        "fielddata" : {
          "limit_size_in_bytes" : 639015321,
          "limit_size" : "609.4mb",
          "estimated_size_in_bytes" : 406826332,
          "estimated_size" : "387.9mb",
          "overhead" : 1.03,
          "tripped" : 0
        },
        "in_flight_requests" : {
          "limit_size_in_bytes" : 1065025536,
          "limit_size" : "1015.6mb",
          "estimated_size_in_bytes" : 560,
          "estimated_size" : "560b",
          "overhead" : 1.0,
          "tripped" : 0
        },
        "accounting" : {
          "limit_size_in_bytes" : 1065025536,
          "limit_size" : "1015.6mb",
          "estimated_size_in_bytes" : 146387859,
          "estimated_size" : "139.6mb",
          "overhead" : 1.0,
          "tripped" : 0
        },
        "parent" : {
          "limit_size_in_bytes" : 745517875,
          "limit_size" : "710.9mb",
          "estimated_size_in_bytes" : 553214751,
          "estimated_size" : "527.5mb",
          "overhead" : 1.0,
          "tripped" : 0
        }
      }

我在这里发现了一个类似的问题,Github问题建议增加断路器内存或禁用同样的内存。但我不知道该选什么。请帮帮我!

Elasticsearch版本6.3

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-22 11:52:21

经过进一步的研究,我终于找到了解决这个问题的办法。

  1. 我们不应该禁用断路器,因为它可能导致OOM错误,并最终可能崩溃elasticsearch。
  2. 动态增加断路器的内存百分比是好的,但它也是一个临时的解决方案,因为在结束后,增加的百分比也可能填补。
  3. 最后,我们还有第三种选择,即增加JVM堆的总体大小,默认为1GB,但正如建议的那样,在生产中应该在30-32 GB左右,并且应该小于可用内存总量的50%。

要了解更多信息,请查看这是生产上的elasticsearch的JVM内存配置,堆:调整大小和交换

票数 36
EN

Stack Overflow用户

发布于 2021-12-12 11:20:32

在我的例子中,我有一个包含大型文档的索引,每个文档都有~30 KB和超过130个字段(嵌套对象、数组、日期和ids)。我使用这个DSL查询搜索所有字段:

代码语言:javascript
复制
query_string: {
    query: term,
    analyze_wildcard: true,
    fields: ['*'], // search all fields
    fuzziness: 'AUTO'
}

因为全文搜索很昂贵。同时搜索多个字段甚至更昂贵。计算能力很昂贵,而不是存储空间。

因此:

query_string或multi_match查询目标的字段越多,速度就越慢。在多个字段上提高搜索速度的一种常用技术是在索引时将它们的值复制到单个字段中,然后在搜索时使用该字段。

请参考麋鹿医生,它建议在复制到指令的帮助下搜索尽可能少的字段。

在我将查询更改为搜索一个字段后:

代码语言:javascript
复制
    query_string: {
        query: term,
        analyze_wildcard: true,
        fields: ['search_field'] // search in one field
    }

一切都很有魅力。

票数 1
EN

Stack Overflow用户

发布于 2022-11-24 03:00:51

在我的例子中,我还有一个包含大型文档的索引,其中存储了运行日志的系统,我使用所有字段搜索索引。我使用Java客户端API,如下所示:

代码语言:javascript
复制
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("uid", uid);        
searchSourceBuilder.query(termQueryBuilder);

当我像这样修改代码时:

代码语言:javascript
复制
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("uid", uid);
searchSourceBuilder.fetchField("uid");
searchSourceBuilder.fetchSource(false);
searchSourceBuilder.query(termQueryBuilder);

错误消失了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61870751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档