レイテンシの発生源を診断する (LATENCY DOCTOR、ヒストグラム、commandstats)
Redisパフォーマンスコマンド
# Enable the latency monitor (record events above 100 ms):
CONFIG SET latency-monitor-threshold 100
LATENCY LATEST
LATENCY HISTORY command
LATENCY DOCTOR
# Per-command latency distribution and percentiles:
LATENCY HISTOGRAM GET SET HGETALL
INFO latencystats
# Most expensive commands by total CPU time:
redis-cli -h redis1 -p 6379 INFO commandstats | sort -t= -k3 -rn | head
# On the server host, baseline latency outside Redis (VM/steal detection, 30 s):
redis-cli --intrinsic-latency 30
LATENCY RESET概要
レイテンシモニターは、fork、AOF fsync、expire サイクル、低速コマンドなどのイベントによるレイテンシの急上昇を記録する。コマンドごとのレイテンシのパーセンタイルと、合計 CPU 時間で最もコストの高いコマンドを表示し、ホストレベルでベースラインのレイテンシを測定する。
使用する場面
アプリケーションで p99 レイテンシの急上昇が見られ、SLOWLOG が空であるにもかかわらず低速化の苦情が続く場合。
注意
latency-monitor-threshold のデフォルトは 0 (無効)。診断後は元の値に戻す。SLOWLOG はコマンドの実行時間のみを測定し、ネットワークやキューの待機は見えない。LATENCY イベントは fork や fsync などのサーバー内部のストールも捕捉する。--intrinsic-latency は CPU を消費し、Redis サーバーをホストしているマシン上で実行する必要がある。