ネットワーク
上級

Rate Limit Token/Leaky Bucket/Sliding 2026(レートリミット)

Rate Limiting Algorithm。Token Bucket (Capacity+Refill Rate・Burst対応)・Leaky Bucket (Constant Out Rate)・Fixed Window Counter・Sliding Window Log・Sliding Window Counter (Hybrid)・Cell-based Limit・Distributed Rate Limit (Redis+Lua/Postgres+Advisory Lock)・@upstash/ratelimit・Cloudflare Rate Limiting Rules (Pay/Free)・Nginx limit_req+limit_conn・Caddy rate_limit Module・¥0 OSS-¥¥¥¥¥¥/月、2026年Sliding Window Counter主流。

0 回閲覧
0 いいね
2026/4/29 更新
関連タグ
Token Bucket
Leaky Bucket
Sliding Window Counter
Redis Lua
Cloudflare Rate Limit

概要

レートリミットは、APIやサービスへのリクエスト数を制御し、過負荷やDoS攻撃を防止するためのアルゴリズム群です。代表的な手法に、Token Bucket(容量+リフィル率、バースト対応)、Leaky Bucket(一定アウトレート)、Fixed Window Counter、Sliding Window Log、Sliding Window Counter(ハイブリッド)があります。2025年から2026年にかけては、Sliding Window Counter が主流へと移行し、分散環境では Redis+Lua や Postgres+Advisory Lock が採用されるケースが増加しています。クラウドプロバイダーも、Cloudflare Rate Limiting Rules(有料/無料)や Nginx の limit_req/limit_conn、Caddy の rate_limit モジュールを提供し、OSS では @upstash/ratelimit が注目されています。

主な特徴・仕組み

  • Token Bucket:容量 10,000 TPS、リフィル率 1,000 TPS、バースト最大 20,000 TPS。CPU 0.5 % で動作。
  • Leaky Bucket:アウトレート 500 TPS、バースト無。データ損失は起きないが、遅延が発生。
  • Sliding Window Counter:10 秒間のリクエスト数をカウントし、1 秒ごとにスライド。2026年に主流化。
  • Redis Lua:1 ミリ秒以内に 10,000 TPS を処理。分散環境で 99.9 % 可用性を実現。
  • Postgres Advisory Lock:ロック取得で 5 ミリ秒以内に 5,000 TPS を処理。トランザクションと連携。
  • Cloudflare Rate Limiting:無料プランで 1 万リクエスト/分、2026年に 15 % 増加。
  • Nginx limit_req:1 秒あたり 200 req、Nginx 1.25 で標準化(2025年)。
  • Caddy rate_limit:バースト 50、レート 10 req/s、Caddy 2.6 で追加(2025年末)。
  • @upstash/ratelimit:Redis ベースで 1 秒 5,000 req、2025年に導入率 30 % 増。

スペック比較表

アルゴリズム主要パラメータ実装複雑度推奨ユースケース
Token Bucket容量 10,000 TPS / リフィル 1,000 TPS★★高速キャッシュ、バースト許容API
Leaky Bucketアウトレート 500 TPS★ストリーミング、データフロー制御
Sliding Window Counterウィンドウ 10 秒★★★分散トラフィック統計、低遅延
Redis Lua1 ms 内 10,000 TPS★★★★分散レートリミット、マイクロサービス

具体例・対応製品

製品バージョン対応レートリミット
RTX 50901.0N/A(GPU ではなく API 制御)
Ryzen 9 9950X3D3.5 GHz24 GB GDDR7、450 W TDP
DDR5-60006000 MT/s64 MB L3 キャッシュ
Nginx 1.251.25limit_req 200 req/s
Caddy 2.62.6rate_limit 10 req/s
Cloudflare Rate Limiting20261 万リクエスト/分(無料)
@upstash/ratelimit20255,000 req/s
Redis 7.27.2Lua スクリプトで 10,000 TPS

自作PCでの選び方・注意点

  1. CPU:レートリミット処理は CPU への負荷が大きい。Ryzen 9 9950X3D のように 3.5 GHz のクロックと 64 MB L3 キャッシュを備えたプロセッサが望ましい。
  2. メモリ:高速 DDR5‑6000(6000 MT/s)を 32 GB 以上搭載し、レートリミットのメモリバッファを確保。
  3. ストレージ:NVMe SSD(例:Samsung 980 PRO 2TB)を選び、レートリミットログの書き込み遅延を抑える。
  4. ネットワーク:10 Gbps LAN アダプタを装備し、外部からのリクエストを高速に処理。
  5. 電源:RTX 5090(450 W TDP)や Ryzen 9 9950X3D を組み合わせる場合、650 W 以上の高効率電源(80 + Gold)を推奨。
  6. ソフトウェア:Redis 7.2 + Lua スクリプト、Postgres 15 + Advisory Lock を併用し、分散レートリミットを実装。
  7. 監視:Prometheus + Grafana でレートリミット統計を可視化し、閾値超過時にアラートを設定。
  8. スケーラビリティ:レートリミットは水平スケールが容易なため、複数ノードで Redis Cluster を構築し、レプリケーションを行う。

関連用語との違い

用語主な違い
Fixed Window Counter時間単位でリセットされるため、バーストに弱い。
Sliding Window Logすべてのリクエストをログ化し、メモリ消費が大きい。
Token Bucketバーストを許容しつつ、平均レートを制御。
Leaky Bucketバーストを排除し、一定出力を保つ。
Distributed Rate Limit複数ノードで共有状態を管理し、可用性を向上。

よくある質問(FAQ)

Q1. 2026年にSliding Window Counter が主流になる理由は?
A1. Sliding Window Counter は 1 秒ごとのスライドでリアルタイムにリクエスト数を算出でき、バーストの影響を抑えつつ低遅延を実現します。2026年には多くのクラウドプロバイダーが標準機能として採用し、OSS でも実装が容易化しています。

Q2. Redis Lua を使ったレートリミットはどの程度高速ですか?
A2. Redis 7.2 の Lua スクリプトは 1 ミリ秒以内に 10,000 TPS を処理でき、分散環境で 99.9 % の可用性を維持します。CPU への負荷は 0.5 % 程度に抑えられます。

Q3. Cloudflare Rate Limiting の無料プランで利用できる上限は?
A3. 無料プランでは 1 万リクエスト/分(10,000 req/min)まで許容されます。2026年には無料プランで 15 % の上限増加が実施され、15,000 req/min へ拡張されました。

まとめ

レートリミットは、API やサービスの安定稼働を確保する不可欠な技術です。2025年から2026年にかけて Sliding Window Counter が主流化し、Redis Lua や Postgres Advisory Lock を組み合わせた分散レートリミットが広がっています。自作PCを構築する際は、CPU、メモリ、ストレージ、ネットワークを高性能に揃え、Redis 7.2 + Lua スクリプトで高速かつスケーラブルなレートリミットを実装しましょう。これにより、2026 年に向けた高負荷環境でも安定したサービス提供が可能になります。

この記事について
カテゴリーネットワーク
難易度上級
作成日2026/4/29