DBAtlas · データベース運用アトラス

429 による拒否、ヒープ、サーキットブレーカーの負荷を診断する

Elasticsearchパフォーマンス

コマンド

# Thread pool queue and rejection counts (source of 429):
GET _cat/thread_pool/write,search,get?v&h=node_name,name,active,queue,rejected,completed,size,queue_size&s=rejected:desc
GET _cat/nodes?v&h=name,node.role,heap.percent,ram.percent,cpu,load_1m,disk.used_percent,master&s=heap.percent:desc
# Circuit breaker trips and parent breaker usage:
GET _nodes/stats/breaker?filter_path=nodes.*.name,nodes.*.breakers.*.tripped,nodes.*.breakers.parent
GET _nodes/stats/jvm?filter_path=nodes.*.name,nodes.*.jvm.mem.heap_used_percent,nodes.*.jvm.gc.collectors.old
# Fielddata memory usage (per field):
GET _nodes/stats/indices/fielddata?fields=*&filter_path=nodes.*.indices.fielddata

概要

write/search スレッドプールのキューが満杯のために拒否されたリクエスト、ノードごとのヒープ / CPU の状態、サーキットブレーカーの作動、old GC の回数、fielddata のメモリ使用量を表示する。

使用する場面

クライアントが 429 Too Many Requests や es_rejected_execution_exception を受け取る場合、CircuitBreakingException ([parent] Data too large) が発生する場合、またはノードで長い GC 停止が発生する場合。

注意

rejected カウンターはノード起動以降の累積値のため、2 つのサンプル間の増加量を確認する。queue_size を引き上げると拒否は見えなくなるが、ヒープとレイテンシが増加する。本当の対策は、一括処理のサイズ / 同時実行数を減らすか、容量を追加することである。ヒープが 85% を超えたままで old GC が頻繁に実行される場合、ノードは OOM に近づいている。text フィールドで fielddata を有効にすると、ヒープを急速に消費する。

DBAtlas で開く →

関連項目