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