在LLM服务中,API限流是保障系统稳定性和公平性的关键策略。本文将介绍几种常用的限流方法,并提供可复现的实现方案。
限流策略概述
常见的限流策略包括:
- 令牌桶算法:允许突发流量但平均速率限制
- 漏桶算法:平滑请求速率,适合处理突发流量
- 计数器算法:简单直接的请求数量控制
基于Python的实现示例
import time
from collections import defaultdict
class TokenBucket:
def __init__(self, rate, capacity):
self.rate = rate # 每秒令牌生成数
self.capacity = capacity # 桶容量
self.tokens = capacity # 当前令牌数
self.last_refill = time.time()
def consume(self, tokens=1):
self._refill()
if self.tokens >= tokens:
self.tokens -= tokens
return True
return False
def _refill(self):
now = time.time()
elapsed = now - self.last_refill
self.tokens = min(
self.capacity,
self.tokens + elapsed * self.rate
)
self.last_refill = now
# 使用示例
bucket = TokenBucket(rate=10, capacity=100)
for i in range(150):
if bucket.consume():
print(f"请求 {i} 通过")
else:
print(f"请求 {i} 被限流")
部署环境中的实践
在生产环境中,建议结合Nginx或API网关实现更精细的限流策略。例如使用Nginx的limit_req_module:
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
server {
location /api {
limit_req zone=api burst=20 nodelay;
proxy_pass http://backend;
}
}
最佳实践建议
- 根据服务承载能力设定合理的限流阈值
- 实现多级限流(全局、用户、IP)
- 监控限流事件并及时调整策略
通过合理配置API限流策略,可以有效保障LLM服务的稳定运行。

讨论