curl -sI https://img.example.com/thumb/1.jpg # 关注 429 与 Retry-After: 2
列表页一次加载 60 张缩略图,其中 38 张显示灰底,Network 面板里状态码 429,刷新一次又能出来几张。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:图片服务按出口 IP 做了每分钟 120 次的限流,列表页并发 60 个请求瞬间打满配额,前端遇到 429 立刻重试,把配额消耗得更快。
「图片服务 429」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
处理上按这个顺序:给图片请求加并发上限,一次最多同时发 6 个;429 时按 Retry-After 退避,别立即重试;服务端按用户维度而不是出口 IP 限流,避免整栋楼共用一个配额。
确认没问题再收工,列表页一次性加载完不再出现灰块,429 次数降到个位。
