Redis AOFリライトのスパイク:auto-aof-rewrite-percentageとauto-aof-rewrite-min-sizeのチューニング

リライトトリガーのしきい値を調整し、低トラフィック時間帯にリライトをスケジュールすることで、AOFリライトによる予期しないCPUおよびI/Oスパイクを抑制します。

Redis AOFリライトのスパイク:auto-aof-rewrite-percentageとauto-aof-rewrite-min-sizeのチューニング

概要

AOF(Append Only File)リライトは、Redisのデータ整合性と耐久性を維持するための重要な機能ですが、予期しないCPUやI/Oのスパイクを引き起こす可能性があります。この記事では、auto-aof-rewrite-percentageauto-aof-rewrite-min-sizeの設定を調整することで、これらのスパイクを抑制し、リライトを低トラフィック時間帯にスケジュールする方法について説明します。

AOFリライトの基本

AOFリライトは、Redisが蓄積された書き込みコマンドを最適化し、新しいAOFファイルを生成するプロセスです。デフォルトでは、Redisは以下の条件が満たされたときに自動的にリライトをトリガーします:

  • auto-aof-rewrite-percentage:前回のAOFファイルサイズからの成長率(デフォルト100%)
  • auto-aof-rewrite-min-size:リライトをトリガーする最小AOFファイルサイズ(デフォルト64MB)

問題点

デフォルト設定では、特に書き込み負荷が高い環境で、予期しないタイミングでリライトが発生し、CPUとI/Oのスパイクを引き起こす可能性があります。これにより、アプリケーションの応答性が低下したり、レイテンシが増加したりする問題が発生します。

チューニング方法

1. しきい値の調整

auto-aof-rewrite-percentage 200
auto-aof-rewrite-min-size 256mb
  • auto-aof-rewrite-percentageを大きくすると、リライトの頻度が減少します
  • auto-aof-rewrite-min-sizeを大きくすると、小規模なリライトを防止できます

2. 手動リライトのスケジュール

# 低トラフィック時間帯に手動でリライトを実行
redis-cli BGREWRITEAOF

3. 監視と調整

# AOFの現在の状態を確認
redis-cli INFO persistence

ベストプラクティス

  1. アプリケーションのトラフィックパターンを分析し、リライトを計画する
  2. しきい値を段階的に調整し、パフォーマンスへの影響を監視する
  3. 必要に応じて、自動リライトを無効化し、完全に手動で管理する

まとめ

適切なチューニングにより、AOFリライトによるパフォーマンスへの影響を最小限に抑え、Redisの安定性と応答性を向上させることができます。