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主流。
概要
レートリミットは、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 Lua | 1 ms 内 10,000 TPS | ★★★★ | 分散レートリミット、マイクロサービス |
具体例・対応製品
| 製品 | バージョン | 対応レートリミット |
|---|---|---|
| RTX 5090 | 1.0 | N/A(GPU ではなく API 制御) |
| Ryzen 9 9950X3D | 3.5 GHz | 24 GB GDDR7、450 W TDP |
| DDR5-6000 | 6000 MT/s | 64 MB L3 キャッシュ |
| Nginx 1.25 | 1.25 | limit_req 200 req/s |
| Caddy 2.6 | 2.6 | rate_limit 10 req/s |
| Cloudflare Rate Limiting | 2026 | 1 万リクエスト/分(無料) |
| @upstash/ratelimit | 2025 | 5,000 req/s |
| Redis 7.2 | 7.2 | Lua スクリプトで 10,000 TPS |
自作PCでの選び方・注意点
- CPU:レートリミット処理は CPU への負荷が大きい。Ryzen 9 9950X3D のように 3.5 GHz のクロックと 64 MB L3 キャッシュを備えたプロセッサが望ましい。
- メモリ:高速 DDR5‑6000(6000 MT/s)を 32 GB 以上搭載し、レートリミットのメモリバッファを確保。
- ストレージ:NVMe SSD(例:Samsung 980 PRO 2TB)を選び、レートリミットログの書き込み遅延を抑える。
- ネットワーク:10 Gbps LAN アダプタを装備し、外部からのリクエストを高速に処理。
- 電源:RTX 5090(450 W TDP)や Ryzen 9 9950X3D を組み合わせる場合、650 W 以上の高効率電源(80 + Gold)を推奨。
- ソフトウェア:Redis 7.2 + Lua スクリプト、Postgres 15 + Advisory Lock を併用し、分散レートリミットを実装。
- 監視:Prometheus + Grafana でレートリミット統計を可視化し、閾値超過時にアラートを設定。
- スケーラビリティ:レートリミットは水平スケールが容易なため、複数ノードで 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 年に向けた高負荷環境でも安定したサービス提供が可能になります。