操作して学ぶ
レートリミッタ可視化
APIのレート制御は「どのリクエストを通し、どれを 429 で弾くか」を決める仕組み。 アルゴリズムごとにバーストの許し方が違います。 3方式を実際に動かし、連打(バースト)や継続的な高レートで挙動がどう変わるかを見てください。
バケツに毎秒トークンを補充。1リクエスト=1トークン消費。貯まっていれば短時間のバーストも通す。API GW で最も一般的。
利用可能トークン 10.0 / 10毎秒 +2 補充
0
受理 (200)
0
拒否 (429)
0%
受理率
直近のリクエスト(新しい順)
まだありません。「リクエスト送信」やバーストを押してみてください。
バーストの許容と平滑化はトレードオフ。トークンバケットは貯めたぶん一気に通せる(瞬間的なバースト許容)。 リーキーバケットは出力を常に一定へ均す代わりにバーストを吸収しきれず溢れる。スライディングウィンドウは境界バースト問題を避けられるが、 厳密実装は各リクエストの時刻を保持するためメモリを食う(近似版でカウンタ2個に落とす手もある)。
どう使い分けるか
- トークンバケット:普段は静かでたまにバーストするAPIに。貯めたトークンぶんは一気に通せる。実装が軽く、API Gateway の既定によく使われる。
- リーキーバケット:下流を一定レートで守りたいとき(キュー処理・整形)。出力が常に平滑化される代わりに、瞬間的なバーストは溢れて落ちる。
- スライディングウィンドウ:固定窓の「境界でリセットされて2倍通る」問題を避けたいとき。厳密版は各リクエスト時刻を保持するのでメモリと相談。