用途:帮助理解 Clerk 的速率限制机制,并在应用中实现避让与缓解策略,减少 429 与配额超限问题。
限制规则:Clerk 后端 API 按 API key 限流。免费版 20 请求/10 秒、突发 40;Pro 版 100 请求/10 秒、突发 200;企业版自定义。每个响应返回 X-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Reset 头。
主要能力与用法:
- 重试:捕获 status 为 429 的响应,优先读取 retry-after 头,否则用指数退避(2^attempt 秒),最多重试若干次后抛出错误。
- 批量:分批并行获取用户,每批之间暂停;列表查询使用 limit/offset 分页并加间隔,避免一次拉全量。
- 缓存:先查内存 Map(TTL 1 分钟),未命中再调 API;生产环境改用 Redis(如 Upstash)并设置过期时间;在 user.updated 等 webhook 中失效缓存。
- 监控:读取 X-RateLimit-Remaining 与 Limit,剩余低于 10% 时告警,剩余为 0 时计数并记录错误。
常见错误:429 Too Many Requests 需退避重试并加缓存;quota_exceeded 表示月度 MRU 配额用尽,需升级套餐或减少保留用户;并发超限需排队并减小 batchSize;缓存数据过期需在 webhook 中失效。
快速检查:可用 curl 带 Authorization: Bearer $CLERK_SECRET_KEY 请求 https://api.clerk.com/v1/users?limit=1 并 grep x-ratelimit 查看限流状态。
前提:需要具备 API 访问权限的 Clerk 账户、对应用流量模式的了解以及监控/日志基础设施。具体价格与配额细节暂未提供。