ARTICLE DETAIL / 01

1000个请求同时重试,5秒抖动拖成45分钟雪崩

2026-10-24 9495 最新动态
ARTICLE 2026 INSIGHT / UPDATE / STORY
1000个请求同时重试,5秒抖动拖成45分钟雪崩
摘要

下游数据库或微服务出现一次短暂的延迟尖峰,应用里的重试逻辑本该把这次抖动盖过去。但在大多数生产架构里,重试恰恰是把 5秒 的小故障拖成 45分钟 级联故障的那个机制。 亚马逊 Builders' Library 的记录指出,重试本质上是自私的:客户端重试一次失败调用,等于宣称自己的请求足够重要,可以从一个已经在挣扎求生的依赖身上索取更多资源。 如果你的 HTTP 客户端用的是固定延迟、没有抖动(j

下游数据库或微服务出现一次短暂的延迟尖峰,应用里的重试逻辑本该把这次抖动盖过去。但在大多数生产架构里,重试恰恰是把 5秒 的小故障拖成 45分钟 级联故障的那个机制。 亚马逊 Builders' Library 的记录指出,重试本质上是自私的:客户端重试一次失败调用,等于宣称自己的请求足够重要,可以从一个已经在挣扎求生的依赖身上索取更多资源。 如果你的 HTTP 客户端用的是固定延迟、没有抖动(jitter)的标准指数退避,或者在技术栈的多层都开了重试,那你建起来的不是韧性,而是一台同步负载放大器。 同步羊群与分层放大 多数工程师知道立即重试(延迟为0)很危险,于是配置标准指数退避:等1秒,再等2秒,再等4秒。但 Marc Brooker 在 AWS 架构博客关于指数退避与抖动的研究中证明,标准指数退避只降低了单个客户端的重试频率,并没有打破客户端之间的同步。 当下游服务卡住 500毫秒 , 1000个 并发请求会在同一毫秒一起失败: 1000个客户端全部睡 1000毫秒 (2^0 × 1000)。 整整一秒后,1000个客户端齐步醒来,连同正常流入的流量一起猛砸正在恢复的服务器。 服务器再次崩溃,同步波在 2000毫秒 4000毫秒 处重复。 常见错误:无抖动退避与盲目重试 一个典型的 HTTP 或 RPC 调用封装,往往能顺利通过大多数代码评审:最大重试3次,基础延迟1000毫秒,循环里按尝试次数算出延迟再睡过去。看起来很有韧性,但在高负载下正是同步重试风暴的源头。 生产中的后果很直接。当一次发布或数据库锁让延迟越过 2000毫秒 的超时阈值,调用方实例会保持 socket 打开等待,然后在+1秒、+2秒、+4秒处打出同步重试波。即便你重启了过载的下游 pod,在途重试的积压也会在新实例缓存预热完成前把它们压垮——谷歌 SRE 手册在讨论级联故障时描述过这种经典的正反馈循环。 改进方案:全抖动加预算 要让重试在生产中变得安全,需要三个控制手段协同工作: 全抖动 :把延迟随机化到0和指数上限之间(sleep = random(0, min(cap, base × 2^attempt))),把同步尖峰摊平成平滑、恒定的到达速率。 严格的可重试过滤 :只重试瞬时传输错误或明确的 429 503 状态码,存在 Retry-After 头时予以遵守。 本地重试预算(令牌桶) :把重试限制在总出站流量的某个百分比(例如 10% )。依赖彻底挂掉时,预算耗尽,客户端快速失败,而不是放大故障。 在 AWS 对100个竞争客户端的模拟中,全抖动相比标准指数退避把服务器总调用量削减了 50%以上 ,同时完成得更快。三种变体的取舍: 全抖动 random(0, min(cap, base × 2^attempt)):最佳默认选择,高竞争下服务器总工作量最低、完成最快。 等量抖动 temp/2 + random(0, temp/2):保证最小睡眠窗口,客户端不会在0毫秒重试,同时打散羊群。 去相关抖动 min(cap, random(base, prevSleep × 3)):无状态替代方案,按上一次随机等待时间缩放,而非严格的2的幂。 上线前的五条检查 在发布任何客户端 SDK、队列消费者或 API 网关规则之前,用这五条核对重试策略: 只在技术栈的单一层重试:网关或顶层调用方已经重试时,关掉内层微服务跳转和 ORM 驱动的自动重试,让下层快速失败。 始终应用全抖动:并发调用方多于一个的系统里,绝不部署固定间隔或纯2^n退避。 执行10%重试预算:用令牌桶,失败请求超过10%时客户端停止重试、立即卸载。 变更操作要求幂等键:除非传入幂等键并在存储层原子化执行,否则不要对 POST 或 PATCH 端点开启自动重试。 跨跳传播截止时间:进来的请求超时是2000毫秒、已在上游处理花掉1800毫秒,就别再发一次还要1500毫秒的重试——用户早就断开了。 重试只有在失败是瞬时的、孤立的、罕见的时候才有效。一旦失败变成系统性——连接池饱和、数据库副本降级——朴素的重试就把你自己的微服务变成了一支内部僵尸网络。用全抖动替换确定性退避,把重试限制在单一架构层,并执行重试预算,让系统知道什么时候该停止往下挖。 特别

about image
相关标签 最新动态 米乐官网
分享这篇内容
MORE TO READ / 03

推荐阅读

继续浏览相关内容,获得更完整的行业信息和平台观察。

无所不能!凯恩在欧冠夜预热金球奖
2026-10-23

无所不能!凯恩在欧冠夜预热金球奖

如果赛前有人预言,在奥利塞停赛、基米希请假以及路易斯·迪亚斯无法首发的情况下,拜仁能够战平阿森纳,相信绝大多数拜仁球迷会欣然接受。然而,当90分钟激战过后两队以2比2握手言和,慕尼黑人大概是心有不甘的。但不管怎样,这场比赛至少证明了两点:拜仁不再像,而无处不在、无所不能的哈里·凯恩则绝对配得上今年的金球奖。阿森纳主帅阿尔特塔感慨道:“哇,真是一场精彩的比赛——这一水平,可以说是我们所踢过的最高水平

阅读全文
江苏省委副书记、苏州市委书记范波,接连会见知名浙商郭广昌、王均金
2026-10-23

江苏省委副书记、苏州市委书记范波,接连会见知名浙商郭广昌、王均金

10月22日,苏州市委书记 范波 ,市委副书记、市长 王维 会见了复星国际董事长 郭广昌 一行。 范波、王维代表市委、市政府对复星给予苏州发展的关心支持表示感谢。 范波 说,当前苏州正深入学习贯彻习近平总书记对江苏、苏州工作重要讲话重要指示精神,牢牢把握‌上海与苏州重点领域同城化发展、上海(长三角)国际科技创新中心关键支点、国家新型工业化示范区三大战略性抓手,突出产业立市、创新强市、开放兴市,持续

阅读全文
54岁魏延听闻诸葛亮死后随即反叛,杨仪:杀光他的儿子,夷灭三族
2026-10-23

54岁魏延听闻诸葛亮死后随即反叛,杨仪:杀光他的儿子,夷灭三族

魏延,河南义阳人。他的家族既无累世官宦之荣,也无经学传家之誉,唯以“部曲”之身,依附于豪强。 “部曲”,是东汉末年特殊的产物。 他们大多出身寒微,为谋求出路,只能以半奴、半兵的身份,沦为世家大族的私兵,生死荣辱皆系于主家之手。 建安初时,刘备辗转到荆州,魏延就此投身他的麾下。从最底层的士卒起步,凭借着一身胆魄,魏延逐渐在军中崭露头角。 219年,刘备历经苦战,夺取了曹操控制下的重镇,汉中。 此地北

阅读全文
日本兵回忆:日军进村寻找“花姑娘”,最喜欢的一类人到底是谁?
2026-10-24

日本兵回忆:日军进村寻找“花姑娘”,最喜欢的一类人到底是谁?

1943年5月9日清晨,湖南南县厂窖地区,日军第11军所属部队突然冲向瓦连堤,正在熟睡的村民,被枪声、脚步声和叫喊声惊醒。 这不是一次普通的搜查。厂窖地处洞庭湖滨,河汊纵横,村庄沿堤分布。当地百姓多以种田、捕鱼为生,村中青壮年并不集中,面对训练有素、携带枪械的日军,几乎没有抵抗能力。 据战后材料和相关回忆记载,参加行动的日军人数在数千人规模。日军以搜索抗日人员、清剿游击力量为名进入村庄,实际行动却

阅读全文