限流为什么要限流

为什么需要

抢票时接连点了几次刷新,页面上出现一行字:「请求过于频繁,请稍后再试」。这就是被限流了。你平时听说的「平台给内容限流」,指平台少推荐某些内容,与本章讲的不是一回事。本章的(rate limiting)是规定一个请求者在一段时间里最多能发多少个(手机或电脑发给网站的一条消息),超出的部分被拒绝或推迟。

百家菜是本课程虚构的家常菜谱网站,背后是一台一直开着、专门等别人来要菜谱的电脑,叫作(server);它每秒最多能处理多少个请求,叫作(capacity)。一天晚饭前,有人用抓取脚本(自动反复请求网页、把内容存下来的小程序)飞快地搬走全部菜谱。服务器忙着应付脚本,普通读者的请求只好排队,等久了页面就打不开。送来的工作超过了能处理的量,叫作。这并不少见:维基百科背后的维基媒体基金会发现,自动程序只占页面浏览的约 35%,却占了最耗服务器资源的请求的至少 65%(2025)。

在下图里调高脚本的速度,看服务器怎样被挤满;再打开限流。图里模拟 30 秒。「普通读者」这个框代表许多人,每人只发几个请求,合计平均每秒 60 个;一个请求排队 3 秒还没开始处理,就算失败。

一个抓取脚本挤满了百家菜的服务器

先看这里先看「百家菜服务器」框底部的负载条:它表示送来的工作占服务器能力的几成,满了就是过载;旁边是 30 秒结束时还在排队的个数,播放完才显示。把脚本调到「每秒 60 个」,负载条满了,读者的请求开始失败;再打开限流,看负载条回落。

情况
脚本的速度
限流
发起方
处理

  • 送达
  • 被拒绝,退回时带着 429:服务器答复「请求过多」(第 8 页细讲)
  • 排队等太久,失败了
  • 一个点代表一批请求,N 是这一批的个数
尚未开始,共 1 步

30 秒里服务器忙碌的时间61%
30 秒里普通读者平均要等0.01秒
30 秒里普通读者的请求失败0%
30 秒里被限流器拒绝0

这 30 秒里,服务器有 61% 的时间在忙;普通读者的请求平均等了 0.01 秒,0% 失败。

怎样做

限流分四步:认出请求来自谁,查这个请求者最近发了多少,判断有没有超出上限,然后放行或拒绝。被拒绝的请求就地退回,带回一条「请求过多」的(服务器发回的消息)。做这件事的(系统里负责一件事的部分,图上的每个框都是一个组件)叫作(rate limiter),站在服务器前面的入口处。

规则里规定的那个数,比如本章用的「每 12 秒最多 8 个」,叫作上限;按这条规则分给某一个请求者的那一份,叫作它的(quota)。限流保护的有四样:

  • 服务器的能力:不让一个抓取脚本挤满服务器(上图)。
  • 公平:智能厨具公司在自己的 App 里展示百家菜的菜谱,它的程序出错后不停地重复请求。每个请求者只有自己的一份配额,它用完了,别人照样分得到服务器的能力。
  • 花费:百家菜每发一条登录验证码短信都要付钱。给「发验证码」单独设上限,脚本再怎么点,账单也涨不上去。人工智能公司 Anthropic 的文档也说,它设上限的用意之一是减少使用者无意中花掉的费用(文档未注明日期)。
  • 账号安全:限制一个账号短时间里能试几次密码,乱猜的人就很难猜中(第 7 页)。

限流器要放在百家菜自己这一边。App 和网页里的程序运行在别人的设备上,可以被改掉或绕过;在 robots.txt 文件里写「请不要抓取」也不够,互联网标准 RFC 9309 说明,这只是请抓取程序遵守的规则,不是访问授权(2022)。只有在服务器一侧执行的限流才算数。

代价是什么

限流也有代价。第一,可能误伤:许多人共用一个对外的 (网络上用来找到一台设备的一串数字)时,会被当成同一个请求者(第 7 页)。第二,每个请求都要多查一次计数(第 9 页)。第三,上限要定得合适,太松拦不住,太紧会拒绝正常用户。在线支付公司 Stripe 先让新的限流器只记录、不拦截地试运行,看它会拒绝哪些请求,再调整上限、正式启用(2017)。

还有两种情况,按请求者计数的限流帮不上忙。在图上切换到「成千上万个请求者」:攻击者操纵大量设备,每台只发几个请求,谁都没有超出上限,加在一起却压垮了服务器,这叫(DDoS)。替网站抵御攻击的 Cloudflare 公司记录到,2025 年 12 月的一场攻击活动最多时每秒有 2.05 亿个请求。再切换到「所有人同时涌来」:热门烹饪课晚上八点开放报名,几千位读者同时点进来,每人只发几个请求。

这两种情况要靠别的办法:服务器快要过载时主动拒绝一部分请求、保住已经接下的工作,叫(第 12 章细讲);让访问者先在等候页面排队,再按服务器承受得了的速度放进去,叫。2022 年 11 月,票务公司 Ticketmaster 的一场演唱会预售收到了以往峰值 4 倍的请求,它用邀请码、排队和候补名单控制进入的人数(2022)。

资料来源

以下资料均于 2026-10-19 访问。

  1. How crawlers impact the operations of the Wikimedia projectsBirgit Mueller 等,Wikimedia 基金会,2025-04-01
  2. Rate limitsAnthropic(Claude Platform 文档),未注明日期
  3. RFC 9309: Robots Exclusion ProtocolIETF(M. Koster 等),2022-09
  4. Scaling your API with rate limitersPaul Tarjan,Stripe,2017-03-30
  5. 2025 Q4 DDoS threat report: A record-setting 31.4 Tbps attack caps a year of massive DDoS assaultsOmer Yoachimik,Cloudflare,2026-02-05
  6. Taylor Swift | The Eras Tour Onsale ExplainedTicketmaster,2022-11-19