【れーとりみっと】

レートリミット とは?

最終更新:
💡 「1分間に何回まで」とルールを決めてアクセスを絞る門番

一定期間内にサーバーへアクセスできるリクエスト数を制限する仕組み。APIの過負荷防止・スパム対策・コスト管理などを目的として設定される。

📌 このページのポイント
トークンバケット:許可の残りを管理 例:容量5、要求1回で1枚消費 トークンバケット リクエスト 残りあり 処理へ進む 残りなし 429の例 補充 決めたペースで、容量まで補充 ためた分で短時間の集中を許せる
トークンがなければHTTP 429で拒否する設定の例。橙は要求、緑は許可、赤は拒否、青は補充。許可後の処理成功を保証せず、待ち行列や接続切断など他の制限方法もあります。
ひよこ ひよこ
レートリミットって何で必要なの?
ペンギン先生 ペンギン先生
短い時間に大量のリクエストが来ると、サーバーの処理や費用に負担がかかるからだよ。利用者やAPIごとに頻度を制限し、過剰な利用を抑える。ただし、制限を付けるだけで全ての攻撃や過負荷を防げるわけではないんだ。
ひよこ ひよこ
超えると必ず429が返るの?
ペンギン先生 ペンギン先生
HTTPでは429 Too Many Requestsで知らせる方法があるよ。でも、制限時に待ち行列へ入れたり、接続を切ったりする実装もある。Retry-Afterで待ち時間を知らせることもできるけど、このヘッダーは必須ではないよ。
ひよこ ひよこ
何を単位に数えるの?
ペンギン先生 ペンギン先生
ユーザーID、APIキー、IPアドレスやAPI全体など、目的に合わせて決めるよ。個別の利用者の上限と、サービス全体の上限を組み合わせる方法もある。誰のどの操作を制限するのかを、先に決めることが大切なんだ。
ひよこ ひよこ
トークンバケットとウィンドウ方式は何が違うの?
ペンギン先生 ペンギン先生
トークンバケットは一定のペースで許可用のトークンを補充し、要求ごとに消費するよ。容量までためられるので短時間の集中を許せる。固定ウィンドウは時間枠ごとに回数をリセットし、スライディングウィンドウは数える時間範囲をずらす。細かな挙動は実装や設定によるんだ。
ひよこ ひよこ
制限されたらすぐ送り直せばいい?
ペンギン先生 ペンギン先生
すぐ何度も送り直すと負荷が増えるよ。サービスの案内やRetry-Afterを確認し、待ってから回数を抑えて再試行するんだ。また、サービスによって上限は厳密な保証ではなく目標として扱われる。AWS API Gatewayもそのように説明しているよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「レートリミット」って出てきたら「アクセスの頻度に上限を設ける仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Rate Limiting」 = レート(頻度)の制限
💬 「Rate」は「速度・頻度」の意味。リクエストの頻度に上限を設けることで過剰なアクセスを制御するよ

参考資料

← 用語集にもどる