12 性能瓶颈定位的整体思路是什么?
2026/9/14...大约 2 分钟
12|性能瓶颈定位的整体思路是什么?
开场先给总纲:瓶颈定位是排除法——沿着请求链路从外到内逐层看,找到第一个饱和点。
回答思路
第一步:链路分层排查结构
入口(网关、负载均衡)→ 应用服务(线程池、连接池、GC)→ 中间件(缓存命中率、消息积压)→ 数据库(慢查询、锁)→ 资源(CPU、内存、磁盘 IO、网络)——一层层往下剥。
第二步:讲排查顺序的取舍
先扫资源层最便宜(CPU 打满、磁盘 IO 高一眼可见);资源都不高还慢,问题多半在排队和等待(连接池、锁、下游依赖)。这个判断顺序体现的是分析效率意识。
第三步:讲指标联动的判读(核心)
| 联动特征 | 指向 |
|---|---|
| TPS 上不去 + RT 平稳 + CPU 低 | 看连接池和线程池是不是配小了排队 |
| RT 陡增 + CPU 不高 | 大概率在等下游或等锁 |
| CPU 打满 + RT 涨 | 看代码热点(算法、序列化、日志) |
给两三组联动组合,说明你会读曲线而不是看单个数字。
第四步:讲工具链
系统层 top、vmstat、iostat、sar;Java 应用 jstack、jstat、arthas 在线诊断;链路追踪(trace)看耗时分布在哪一跳;数据库慢查询日志和 explain——工具报得出名字且各管一层,可信度立住。
收尾:讲验证闭环
定位到的瓶颈(比如慢 SQL)优化后必须复压,用同场景数据前后对比确认——瓶颈定位的终点是「优化验证有效」,而不是「指出嫌疑人」。
考察重点
| 维度 | 说明 |
|---|---|
| 企业动机 | 性能测试的溢价就在定位能力——只会压数不会分析的人报告没价值,企业为「能告诉开发该改哪」的人付高薪 |
| 过线标准 | 链路分层的排查结构 + 至少两组指标联动判读 |
| 区分度 | 讲「资源不高还慢就查排队和等待」这种推理的是有分析思维的;只会说「看监控」的是没独立定位过 |
| 加分项 | arthas、trace 这些具体工具的实战用法 |
| 减分项 | 定位思路是「把报错发给开发」,性能岗直接出局 |
来源
整理自知识星球帖《面试情报 04|性能测试 20 题》,返回题库。