429とは何か(定義)
429は、HTTPのステータスコードの一つで「リクエストが多すぎるため、処理できない」ことを表します。サーバ側で何らかの制限(例:一定時間あたりのアクセス上限)に達した場合に返されることがあります。ここで重要なのは、429が“永続的に拒否する”という意味とは限らず、制限が解除されるまでの“待ち”が関係するケースが多い点です。
仕組み:なぜ429が返るのか
429は、クライアントからのリクエスト量が、サーバが許容する範囲を超えたときに発生しやすくなります。典型的には次のような状況が考えられます。
- 同じクライアント(同じIPや識別情報など)から短時間に大量のリクエストが来ている
- フロント側または中継(CDN、APIゲートウェイ等)が、過負荷防止のために制限を適用している
- 誤ったリトライ(失敗時に待たずに即再送)が、さらにリクエスト数を増やして制限に到達している
また、サーバが制限をかける目的は、単なる公平性だけでなく、過負荷を避けるための安定運用にもあります。そのため、429は「一時的な運用上の判断」として返ることがあります。
制限の考え方:何が“制限”されているのか
429で言う“多すぎる”は、必ずしも「総リクエスト数」だけではありません。実装によって、制限の単位や計測期間が異なることがあります。たとえば、次のような形で制限が設計される場合があります(どれが使われているかはサーバごとに異なります)。
- 時間あたり(1分、5分など)の回数上限
- エンドポイント(特定API)ごとの上限
- ユーザーやトークンなどの識別子ごとの上限
- バースト(短時間の急増)に対する上限
このため、429に遭遇したときは「何が上限に当たっているのか」をレスポンス情報やログで確認し、再発防止につなげるのが実務的です。なお、ここでは一般的な整理に留めます。どの識別方法や計測期間が採用されているかは、対象のサービス仕様に依存します。
例外・注意点:他のエラーと混同しない
429に似た状況として、次のようなHTTPステータスが挙げられます。ただし、目的と対処は異なります。
- 401(認証が必要)や403(アクセス禁止):権限や認証の問題が中心で、待機しても根本解決にならないことが多い
- 503(サービス利用不可):サーバ側の一時的な障害や過負荷が主因で、制限とは別の可能性がある
- 400系(リクエスト不正):リクエスト内容が原因で、送信頻度を下げても改善しないことがある
429は「頻度・量・負荷」由来の可能性が高い一方、常にそれだけとは限りません。特定のAPIでのガードやWAFの判定など、別の仕組みが“結果として429”を返すこともあり得ます。だからこそ、レスポンスの追加情報と状況をセットで見ます。
実践的な確認方法:自分の環境で切り分ける
429が出たら、次の観点で確認すると原因に近づきやすくなります。
