Skip to main content

一次导出超时,我对了三份日志才敢改代码

用网关整链、业务拦截器、下游出图三条时间线定位超时,再谈异步导出状态机。

超时类文章很多,但把「网关整链 / 业务拦截器 / 下游出图完成」三条时间线对照成固定排障法的并不多。异步导出状态机本身不新,和「禁止同步重建以免网关超时」绑在一起,才是可抄的纪律。

三份耗时对照

约定固定读三类日志:

  • 网关 access log:startTime、整链耗时(毫秒)
  • 业务服务访问日志:单请求耗时
  • 出图进程完成日志:耗时 + 成功/失败张数

读法:

  • 两线接近 → 瓶颈在业务或更下游
  • 业务明显短、网关很长 → 查网关链或网络,而不是先改业务算法

没有这三份对照,就没有资格改代码。

长导出的状态机

大表导出不要指望同步扛完:

  • 异步生成 + 状态:未生成 / 等待 / 导出中 / 失败 / 就绪
  • 文件落盘 + 状态通知;关页面不取消后端任务
  • 非默认配置时先「叠加确保最新 + 进度」,禁止同步重算拖垮网关

可复用的落点

  1. 超时结论必须能回答:慢在哪一层。
  2. 「前端转圈」与「HTTP 已超时」可以同时为真。
  3. 大包要防:同步重建、整包进堆、半截文件。

排障先对齐时间线,再谈优化;否则你改的可能是错的那一层。