17 号图库首轮崩溃:2025 年 12 月 9 日 23:48 的 412 条超时
那天晚上值班的同事陈立平在群里贴出监控截图:17 号图库的缩略图接口在 37 分钟内累计返回了 412 条超时,其中 89 条是重复请求。我第一反应不是硬件,而是缓存键的版本号没跟着索引走。修复的第一步,是先复现这个超时,而不是急着扩容。
新奥门17图库bug修复记录:一次从缓存穿透到索引重建的完整排障手记。2025 年 12 月 13 日更新。
那天晚上值班的同事陈立平在群里贴出监控截图:17 号图库的缩略图接口在 37 分钟内累计返回了 412 条超时,其中 89 条是重复请求。我第一反应不是硬件,而是缓存键的版本号没跟着索引走。修复的第一步,是先复现这个超时,而不是急着扩容。
旧方案里,索引回滚要等整点快照,最长 6 小时。我改成了增量快照加日志回放,实测回滚窗口压缩到 40 分钟。这个数字是 12 月 11 日上午在测试集群上跑出来的,不是拍脑袋。配套的监控看板也同步换了口径,参考了站内那篇49图库资料库恢复成功率提升里的统计方式,避免两边口径打架。
真正让我兴奋的是 12 月 12 日晚上发现的东西。空结果没有写占位缓存,导致同一个不存在的图集 ID 在一秒内被查了 200 多次。补上占位缓存后,17 号图库的查询压力当场降了约 63%。这个手法在49图库资料免费打开维护功能介绍里提过一句,但没人把它和 17 号图库的报错联系起来。
压测是张若彤写的,她用 1200 并发去冲缩略图接口,跑了三轮,每轮 15 分钟。第一轮还有 7 次超时,第二轮 1 次,第三轮归零。她在脚本注释里留了句话:“别只看平均值,看尾部。”这话我抄进了修复日志的抬头。想先了解恢复流程的读者,可以从49图库恢复正常使用免费打开49看起,再回头对照这里的数字。
回源这块我们动了四个参数:连接超时从 3 秒改 1.5 秒,重试次数从 3 降到 1,回源并发上限从 80 提到 120,另加一个 200 毫秒的抖动。改完的当天下午,云存储侧的 5xx 告警从每小时 17 条降到 2 条。回源配置的细节,我在49tk图库资料库免费打开云存储教程里写过更细的版本,这次直接复用。
后端稳了不等于用户看到的是对的。12 月 10 日有用户反馈详情页白屏,排查发现是图片懒加载组件在拿到空列表时没渲染占位骨架。我们在前端加了一个 300 毫秒的兜底骨架屏,白屏投诉当天归零。这里我坚持一个观点:bug 修复记录如果不写前端兜底,就只算修了一半。
12 月 10 日凌晨,慢查询日志里有个按更新时间排序的语句稳定在 200 毫秒左右。加了复合索引之后降到 9 毫秒。动作很小,但这是整个修复链条里最容易被漏的一环,因为它在高峰期反而不明显,低谷期才冒头。修的时候我顺手核对了49图库app安卓版下载方法页面里提到的客户端版本分布,确保老版本客户端不会触发这条慢查询。
今天上午的全量回归跑了 9 个核心用例,2 个失败都不是阻断级:一个是测试环境的时间戳时区没对齐,一个是断言写死了旧字段名。我们把这两条记进待办,没有急着改。截稿前,17 号图库连续 18 小时没有出现新的索引报错,这是这段时间里最让人踏实的一个数字。
我见过太多团队把修复记录锁在内部文档里,结果同类问题换个人再犯一遍。把 17 号图库这次从 412 条超时到归零的过程公开写出来,不是为了证明什么,而是让下一个凌晨两点十七分盯着控制台的人,能少走一段弯路。这篇记录里的每个数字都有出处,每条结论都能回放。
我叫江晚,做图库系统的稳定性维护,日常工作是盯监控、读日志、写修复记录。这个站是我自己搭的,起因是 2025 年 10 月一次连续三天的索引故障,我发现搜遍全网也找不到一份能对得上号的排障过程。
所以我开始把每次修复的原始时间线、验证数字和失败尝试都记下来,不美化,不省略中间步骤。新奥门17图库bug修复记录这个站点,本质上就是我的工作笔记公开版。如果某段记录帮到了正在排障的你,那它就已经值回我写它的时间。
“别只看平均值,看尾部。”—— 张若彤,压测脚本注释,2025 年 12 月 12 日