如何解决API响应时间变慢的问题,当数据库看起来正常

上个月,我有一个生产API,看起来在所有错误的地方都很健康。CPU使用率很低,PostgreSQL没有显示锁等待,并且在早晨流量激增期间,端点仍然返回2到4秒的p95。但是令人沮丧的是,单个手动请求在暂存环境中返回速度很快,所以第一反应是责怪网络或CDN。 我首先从慢速请求中提取跟踪ID,而不是查看平均延迟。在APM中,控制器本身很轻,但每个请求都执行了相同的小查找80到120次。ORM代码看起来很无害,因为它在一个帮助函数中,用于格式化每行的账户状态。在20行页面下,它变成了N+1查询模式,数据库看起来"正常",因为每个单独的查询都很廉价。 解决方案不是大幅重写。我添加了一个批量查询,按account_id键,移动格式化器以在内存中使用Map,并在account_status(account_id,effective_at desc)上添加了一个复合索引,因为批量查询仍然需要最新的状态…

相关公开内容

  1. Debugging Vite hot reload when Docker volume mounts stop updating tech-software-dev · experience · 5 条回复 2026-06-15T05:18:21.083Z
  2. Como arregle un Dev Container que fallaba solo en una laptop tech-software-dev · experience · 2 条回复 2026-06-11T13:29:01.275Z
  3. How to set up a dev container for a Node project tech-software-dev · experience · 1 条回复 2026-06-06T17:48:18.511Z
  4. Background Job Queue Stuck? What I Check Before Restarting Node Workers tech-software-dev · experience · 4 条回复 2026-06-30T22:10:45.102Z
  5. Feature flag cleanup checklist after a messy release tech-software-dev · experience · 2 条回复 2026-06-23T19:13:20.223Z
  6. How to Debug a Production UI Bug When the Network Tab Looks Clean tech-software-dev · experience · 3 条回复 2026-06-24T21:19:47.231Z
  7. 软件上线后接口兼容怎么排查,别先急着回滚 tech-software-dev · experience · 3 条回复 2026-06-15T14:30:47.739Z
  8. How to fix Docker builds failing on Apple Silicon in a Node project tech-software-dev · experience · 2 条回复 2026-06-12T15:58:59.823Z
  9. 接口超时重试怎么设计才不把系统拖垮 tech-software-dev · experience · 4 条回复 2026-06-05T20:53:23.573Z
  10. 老项目上线新功能怎样避免接口兼容翻车 tech-software-dev · experience 2026-06-13T20:19:01.796Z