延迟优化排查思路

从压测构造到链路隔离的最小检查清单

Posted by BY on April 25, 2026

原始内容只有 5 条提纲,这里把它整理成一份更适合回看的排查顺序:先稳定复现,再逐段量化,最后做组件隔离。

1. 搭建压测环境

先保证问题可以稳定复现,否则后面的优化收益很难量化。

重点是先确认:

  • 流量规模是否接近真实场景
  • 压测环境和线上配置差异有多大
  • 压测时是否会被其他噪声任务干扰

2. 构造请求

压测数据要尽量覆盖真实瓶颈触发条件,而不是只跑一组最简单的 happy path。

至少要分清:

  • 正常请求和大包 / 慢请求
  • 冷启动流量和热路径流量
  • 是否存在特殊参数会显著拉高耗时

3. 统计各模块内部耗时

先看模块内部哪一段最慢,再决定是否继续深挖实现细节。

适合优先补齐:

  • 函数级耗时
  • 关键循环 / 关键锁耗时
  • I/O、序列化、拷贝等高频操作耗时

4. 统计各模块间耗时

单个模块内部不一定慢,问题也可能出在模块之间的调用和排队。

这里更适合关注:

  • RPC / IPC 往返耗时
  • 队列等待时间
  • 上下游服务之间的时间分布

5. 屏蔽链路上的可疑组件

最后再通过隔离法确认瓶颈到底落在哪一层,例如:

  • 暂时绕过某些 service
  • 暂时绕过 cache
  • 暂时绕过 mysql

如果某个组件被屏蔽后延迟明显下降,就说明下一步应该优先深挖那一层,而不是继续在整条链路上盲目优化。