【问题标题】:Cause and how to debug Elasticsearch CircuitBreakingException原因以及如何调试 Elasticsearch CircuitBreakingException
【发布时间】:2020-06-29 09:21:21
【问题描述】:

我想知道这个错误的变量情况。

> CircuitBreakingException[[parent] Data too large, data for
> [<transport_request>] would be [32633199948/30.3gb],  which is larger
> than the limit of [32573515366/30.3gb], real usage:
> [32633199624/30.3gb], new bytes reserved: [324/324b] , usages
> [request=0/0b, fielddata=182494625/174mb, 
> in_flight_requests=332048906/316.6mb, accounting=908301644/866.2mb]]

它有时会发生,但我不知道为什么。

【问题讨论】:

  • 检查您的字段缓存 GET /_stats/fielddata?fields=*
  • @Johnny,它是一个in_flight_requests 断路器,因此检查字段数据是不够的,添加了有助于调试这些问题的答案,请查看

标签: elasticsearch exception circuit-breaker


【解决方案1】:

首先,防止弹性搜索集群中出现内存不足错误是一件好事,如official ES link 中所述。

Elasticsearch 包含多个断路器,用于防止 导致 OutOfMemoryError 的操作。每个断路器指定一个 限制它可以使用多少内存。此外,还有一个 指定总内存量的父级断路器 可用于所有断路器。

现在查看您的异常,我们可以得出一些结论,这些事情可以帮助您调试这些零星问题并为同一链接中提到的 Elasticsearch 中可用的不同断路器设置更好的限制:

  1. 鉴于断路器发生在异常消息中提到的 [parent] Data too large 的父级限制。
  2. official link for in-flight circuit breaker 异常消息中提到的in_flight_requests 中的一些正在进行的请求会发生这种情况。
  3. 由于它不是现场数据断路器和飞行中断路器,因此执行非常昂贵的搜索请求的可能性很高。
  4. 您应该将父断路器的 JVM 降低到较小的值,目前,通过查看您的异常,它看起来使用了 95% 的 JVM,有关如何设置这些的更多信息可以找到 here。李>

【讨论】:

  • Ninja 感谢您每次的帮助。
  • @Johnson,很高兴我能帮上忙,感谢您接受和支持答案:-)
猜你喜欢
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 2011-11-06
  • 2017-08-23
相关资源
最近更新 更多