多租户下的配额与限流:别让一个用户拖垮所有人

人工智能 · 2026-10-07

多租户系统的事故常源于单个租户打爆资源。本文给出四层防护(配额、限流、并发隔离、降级熔断)、该观测的指标与一份可执行的上线清单。


一个用户拖垮所有人

多租户系统里最常见的线上事故:某个租户写了脚本猛刷接口,把模型配额、连接数或带宽吃光,

**所有租户一起变慢或失败**。这类事故靠"事后扩容"救不回来,必须**事前隔离**。

四层防护

**一、配额(Quota)**

按租户限定"一段时间内可用多少"(调用次数、token 数、并发数、存储量)。

要点:

  • 配额维度要匹配成本来源(对话类按 token,批量任务按条数或并发);
  • 超额行为要**明确**:拒绝、降级到小模型、还是排队等;
  • 配额用量对租户**可见**(避免"莫名其妙失败")。
  • **二、限流(Rate limit)**

    控制**速率**(每秒/每分钟),与配额互补:配额防"总量超标",限流防"瞬时打爆"。

  • 用令牌桶/漏桶;给突发留一点余量(例如允许 2 倍瞬时);
  • 限流键要分层:租户级 + 全局级(全局兜底,防止"每个租户都不超但总量爆");
  • 被限流时返回明确状态与建议等待时间。
  • **三、并发隔离**

  • 每个租户的并发请求数设上限;
  • 关键路径与批量任务**分池**(批量任务不能占满交互请求的池子);
  • 队列要有优先级:交互优先、批量让路。
  • **四、降级与熔断**

  • 上游变慢时,先降级(小模型/缓存/规则兜底),再考虑拒绝;
  • 熔断要有恢复探测(半开状态),不要"断了就一直断";
  • 每个降级动作都要记录,便于事后归因。
  • 观测什么

  • 按租户的**用量分布**(找出 Top 5 是不是异常增长);
  • **拒绝率/限流触发率**(被限流的租户是否知道原因);
  • **排队时长**的 P95(排队比拒绝更容易被忽略);
  • 全局与单租户的**成本曲线**(成本突然抬升往往是脚本或死循环)。
  • 一个可执行的上线清单

    1. 列出每个接口的成本来源,定配额与限流值(宁可先紧,后放开);

    2. 加租户级 + 全局级限流;

    3. 批量与交互分池,队列设优先级;

    4. 降级链写清楚,熔断加半开探测;

    5. 把"按租户用量/拒绝率/排队时长"做进看板,并做一次**单租户压测**验隔离是否真的生效。

    想要你的品牌在AI回答里被推荐?

    免费诊断 →