第10章 — 運用と監視: キャッシュを見守る
「キャッシュは設定したら終わりじゃない」
「キャッシュは生き物だ。負荷パターン、データ量、アクセスパターンは常に変化する。監視なしでは、いつの間にかキャッシュが効かなくなっていることもある」
主要メトリクス
1. ヒット率(Hit Ratio)
最も重要な指標。キャッシュがどれだけ有効に機能しているか。
ヒット率 = キャッシュヒット数 / (ヒット数 + ミス数) × 100
| ヒット率 | 評価 | アクション |
|---|---|---|
| 95%+ | 優秀 | 現状維持 |
| 85-95% | 良好 | TTL 調整を検討 |
| 70-85% | 要改善 | キャッシュ対象の見直し |
| 70%未満 | 問題あり | キャッシュ戦略の再設計 |
Loading chart...
上のグラフで金曜〜土曜にヒット率が低下し、メモリ使用率が上昇している。セール時のデータ急増でエビクションが頻発している兆候だ。
2. レイテンシ
Redis INFO で確認:
- instantaneous_ops_per_sec: 秒あたりの操作数
- used_memory: メモリ使用量
- keyspace_hits / keyspace_misses: ヒット/ミス数
3. エビクション数
キャッシュからデータが追い出された回数。急増はメモリ不足のサイン。
4. 接続数
Redis への同時接続数。上限に近づくと新規接続が拒否される。
アラート設計
Loading diagram...
| メトリクス | WARNING | CRITICAL |
|---|---|---|
| ヒット率 | < 85% | < 70% |
| メモリ使用率 | > 80% | > 95% |
| Redis レイテンシ | > 5ms | > 20ms |
| エビクション/分 | > 100 | > 1000 |
| 接続数 | > 80% of max | > 95% of max |
障害対応パターン
パターン1: キャッシュサーバーダウン
Loading diagram...
パターン2: ヒット率の急低下
原因を特定するフロー:
Loading diagram...
パターン3: メモリ肥大化
# Redis のメモリ分析
# 大きなキーを見つける
redis-cli --bigkeys
# メモリサンプリング
redis-cli memory usage "product:123"マナミの監視ダッシュボード
Loading chart...
マナミは Grafana ダッシュボードに以下のパネルを設置した:
- リアルタイムヒット率 — 10秒間隔
- メモリ使用量推移 — 1時間/1日/1週間
- レイテンシ分布 — p50/p95/p99
- エビクション数 — 分あたり
- トップキー — 最も頻繁にアクセスされるキー
次の章では、実際のケーススタディを通して、キャッシュ戦略の統合パターンを学ぶ。