curl -X POST /api/export -d '{"from":"2026-01-01","to":"2026-03-31"}'
curl /api/export/T20260301001/status

财务导出 90 天订单明细,浏览器转圈 60 秒后报 504,网关日志 upstream timed out,SQL 实际跑了 68 秒。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,导出走同步接口,一次查三个月的明细并全部加载进内存。网关超时是 60 秒,查询还没结束连接就被断开。报表页没有分片,也没有走异步任务。

围绕「报表查询超时」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

处理上按这个顺序:导出改成异步任务 提交后返回 task_id;按天分片查询 每片单独落文件再合并;接口只做提交和查询进度 不在请求里等结果;用 90 天数据跑一次 记录总耗时和分片数。

改完只确认一件事:提交后立即返回 task_id,90 天文件 4 分 20 秒生成,接口不再 504。

作者 9823189