circuit_breaking_exception: CircuitBreakingException[[parent] Data too large, data for [<...>] would be [...], which is larger than the limit of [...]](データが大きすぎる (サーキットブレーカー))
Elasticsearch意味
要求がメモリ (ヒープ) のサーキットブレーカーの上限を超えるため拒否された。Elasticsearch は、ノードが OutOfMemoryError でクラッシュするのを防ぐため、要求を事前に停止する。[parent] ブレーカーはメモリ使用量全体を、[fielddata] ブレーカーは text フィールドの fielddata メモリを保護する。
原因
JVM ヒープの不足、非常に大きい/複雑な集計、大きな結果セット、大きな bulk 要求、text フィールドにロードされた fielddata、またはヒープを圧迫する多数の重い同時クエリ。通常はヒープ圧迫の症状である。
対処方法
クエリを小さくする: 集計サイズ、bulk のバッチサイズ、返すフィールドを減らす。text フィールドの fielddata ではなく keyword サブフィールド (.keyword) で集計する。JVM ヒープを増やす (サーバー RAM の約 50%、最大約 31GB)。ヒープ圧迫を監視する: GET _cat/nodes?v&h=name,heap.percent。ブレーカーの上限を一時的に引き上げるのではなく、根本原因 (メモリ/クエリ) を解消する。どのブレーカーが作動したかは GET _nodes/stats/breaker で確認する。
同じデータベースの他の項目
- cluster_block_exceptionClusterBlockException[blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block]] (7.x より前: FORBIDDEN/12/index read-only / allow delete (api))
- index_read_only_allow_deleteTOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block (旧形式: FORBIDDEN/12/index read-only / allow delete (api))
- high_disk_watermark_exceededhigh disk watermark [90%] exceeded / flood stage disk watermark [95%] exceeded(ディスクウォーターマークの超過)
- mapper_parsing_exceptionmapper_parsing_exception: failed to parse field [...] of type [...](フィールドの解析に失敗)
- strict_dynamic_mapping_exceptionstrict_dynamic_mapping_exception: mapping set to strict, dynamic introduction of [...] within [...] is not allowed(strict マッピングで新しいフィールドの動的追加は不可)
- illegal_argument_exception_fielddataillegal_argument_exception: Fielddata is disabled on text fields by default. Set fielddata=true on [your_field] in order to load fielddata in memory(text フィールドの fielddata はデフォルトで無効)
- search_phase_execution_exceptionsearch_phase_execution_exception: all shards failed / Failed to execute phase [query](全シャードで検索フェーズの実行に失敗)