技术分享

从日志入手定位系统性能瓶颈

梳理排查性能问题的常用顺序:先看日志与监控,再定位慢查询与线程阻塞。

系统变慢时,最容易走弯路的是「先猜原因、再改代码」。更可靠的做法是从日志和监控出发,按固定顺序收敛排查范围。

第一步:先把现象量化

不要接受「系统很慢」这样模糊的描述,先问清三件事:

  • 慢的是哪个功能,而不是整个系统
  • 从什么时候开始,之前有没有发版或数据量突增
  • 是持续慢还是偶发慢,两者排查方向完全不同

第二步:先看日志,不要先看代码

把同一时间窗口的应用日志、慢查询日志与系统负载按时间轴对齐,通常能立刻看出特征:

  • 错误日志突增并伴随变慢 → 下游依赖异常,重试放大了压力
  • 慢查询集中出现 → 索引缺失,或数据量跨过了临界点
  • 没有明显异常但吞吐下降 → 线程池耗尽或连接池等待

第三步:慢查询的收益最高

绝大多数业务系统的瓶颈最终落在数据库上。先看执行计划,重点确认:

  • 有没有走索引,还是在做全表扫描
  • 排序、分组是否产生了临时表
  • 返回行数是否远超实际需要的行数

经验:加一个合适的联合索引,往往比改十处业务代码更有效。

第四步:必须复测

改完要用同一份脚本复测同一组指标。没有复测的优化只是改了代码,并不代表问题已经解决。