Elasticsearch Circuit Breaker
ElasticsearchのJVMのheapがout of memoryにならないようにする安全装置
メモリが足りない状態のESが処理できなそうな大きなリクエストを受けると、エラーを返す
「今の私にはデカすぎて無理なので処理しません」という事
その間も小さいサイズのリクエストなら処理できたりする
これがない時代はサーバーがクラッシュしていたらしい
ドキュメント
Circuit breaker settings | Elasticsearch Guide 7.14 | Elastic
複数のcircuit breakerがある
parent circuit breakerと、それ以外の小さいcircuit breaker
JVM heap 40%からのcircuit breakerもある
詳しくはよくわからないが
painlessなどのES内で動くscriptingのcircuit breaker
同時実行数
複雑な正規表現
記事
Real Memory Circuit Breakerの登場でElasticsearchの回復性が向上 | Elastic Blog
ES 7.xから導入されたReal Memory Circuit Breakerの解説
これまではES内の各処理を計測するcircuit breakerがあった
JVMの実メモリ使用量計測機能を使って、parent circuit breakerを追加した
ES 6までのCircuit breakerでは30分ぐらいaggregationし続けてようやくエラーを返していたリクエストでも、7ではレスポンスを返せた
レスポンスといっても多分エラーレスポンスだろうけど
Amazon Opensearchの記事
Amazon Elasticsearch Service でのサーキットブレーカーの例外を解決する
たぶんElasticsearchとほとんど仕様は同じだと思われるshokai.icon
Amazonは7.x系の最初のあたりでforkしたので
この記事にあるGET /_nodes/stats/breakerでES nodeのcircurit breakerの数値を一覧するAPIは、Elastic Cloudでも使えた
Scrapboxでは、メモリ80%使ってるESにwriteした時に発生した
セミオンプレのElasticsearchでcircuit_breaking_exception Data too largeエラーが出てる