章: 第8章: パフォーマンスと本番運用実践
ジョブが滞留していることに、いつ気づきますか?
Queue の失敗件数がゼロでも、処理が遅延していればユーザーへの影響は出ています。メール送信が1時間遅れる、決済処理が詰まっている——こうした「静かな障害」は失敗件数の監視だけでは検出できません。
遅延時間・失敗率・再試行回数の3点を定点観測することが、Queue運用の品質を保つ鍵です。
問題の本質と解決策
問題: 失敗件数のみを監視すると、ジョブが滞留して遅延が増加していても検出が遅れます。再試行が繰り返されている状態も「失敗」としてカウントされないことがあります。
解決策: Queue のラグ(遅延秒数)と失敗件数を組み合わせた閾値でアラートを設定します。Slack などの通知チャネルに自動送信することで、問題の早期検出が可能になります。
監視なし vs 監視あり 比較
| 観点 | 監視なし | 遅延+失敗の複合監視 |
| 滞留の検出 | ユーザー報告で気づく | ラグ閾値超過で自動検出 |
| 失敗の検出 | 手動でログ確認 | 失敗件数閾値でアラート |
| 再試行ループ | 気づかずに放置 | 再試行回数で検出 |
| 対応までの時間 | 遅い(報告依存) | 速い(自動通知) |
チェックポイント: Queue の監視にラグ(遅延秒数)の閾値は設定されていますか?失敗件数だけでなくラグ監視を追加することで、「遅いが失敗していない」状態も検出できます。
実装サンプル
<?php
if ($failedJobs > 10 || $queueLagSeconds > 120) {
Notification::route('slack', config('services.slack.webhook'))
->notify(new QueueAlertNotification($failedJobs, $queueLagSeconds));
}
まとめ & 次のステップ
- Queue監視は遅延時間・失敗件数・再試行回数の3指標をセットで見ます
- 失敗件数がゼロでも遅延増加は障害の予兆になります
- 閾値は最初低めに設定し、誤検知を調整しながら適切な値に近づけます
- Laravel Horizon を使うと Queue 監視ダッシュボードが簡単に構築できます
- まずはラグ監視1つをSlack通知に連携するところから始めましょう
次回は 障害対応ランブック作成 を学びます。障害時の初動を標準化するための手順書の作り方を解説します。