【れーとりみったー】

レートリミッター とは?

最終更新:
💡 要求の量や速度を制限し、サービスの負担を抑える

決めた期間の要求数や処理の速度などを、ルールに基づいて制限する仕組み。サービスの過負荷防止や利用量の配分に使う。超過時には拒否や遅延などを行い、制限の単位・方式・応答は実装と設定で異なる。

📌 このページのポイント
要求の量や速度を制限する 要求 レート リミッター ルールで判定 許可 サービスへ 超過:拒否 429など ユーザー・IP・APIキー・経路などで制限 拒否・遅延・バーストの扱いは方式と設定による
例として、許可した要求はサービスへ進み、超過した要求は拒否する。方式・設定によっては遅延などの扱いもある。
ひよこ ひよこ
APIで「制限に引っかかった」ときの仕組み?
ペンギン先生 ペンギン先生
そうだよ。たとえば利用者ごとに、ある期間の要求数を制限する仕組みだね。どの期間や利用者を数え、超過時にどう扱うかをルールとして決めるんだ。
ひよこ ひよこ
必ず429エラーが返る?
ペンギン先生 ペンギン先生
HTTPでは429 Too Many Requestsが使われるけれど、すべての実装が返すわけではないよ。要求を遅らせる設定や別の状態コードを返す設定もある。攻撃を受けている場合など、接続を切ることもあるんだ。
ひよこ ひよこ
APIゲートウェイの手前に置く?
ペンギン先生 ペンギン先生
ゲートウェイやリバースプロキシ自体が実装することも、アプリケーション内で実装することもあるよ。NGINXはキーごとの処理速度を制限する機能を持ち、AWS API Gatewayも要求のレートやバーストを管理するんだ。
ひよこ ひよこ
一瞬だけ多くの要求が来ても拒否する?
ペンギン先生 ペンギン先生
方式や設定によるよ。トークンバケットは、たまったトークンを使って一定範囲のバーストを許せる。リーキーバケットでも、超過した要求を待たせる範囲などを設定する。一秒の上限値だけでは動作を決められないんだ。
ひよこ ひよこ
制限を入れれば、DDoS攻撃も全部防げる?
ペンギン先生 ペンギン先生
過負荷への対策の一つにはなるけれど、全攻撃を防ぐ保証ではないよ。何を識別キーにするか、どこで制限するかも関わる。分散した実装では、設定が厳密な上限なのか、目標として扱われるのかも確認するんだ。
もっと詳しく知りたい人へ

429を受け取ったら、すぐ再試行してよい?

連続して再試行すると、さらに負荷をかけて制限にかかり続けることがあります。Retry-Afterがあれば、次に要求するまでの待ち時間を確認します。ただし、このヘッダーは必ず付くものではないため、APIの案内や再試行の方針も確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「レートリミッター」って出てきたら「要求の量や速度を制限して、サービスの負担を抑える仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Rate Limiter」 = 処理の量や速度を制限するもの
💬 Rateは一定時間あたりの量や速度、Limiterは制限するものという意味だよ。たとえば、利用者ごとの要求数や、サービス全体の処理速度を管理するんだ。

参考資料

← 用語集にもどる