小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • 性能测试精华文章

    • 性能测试精华文章
    • 1. 性能测试面试到底问什么
    • 2. JMeter 压测脚本怎么设计
    • 3. 并发用户数和 TPS 怎么理解
    • 4. 响应时间吞吐量错误率怎么分析
    • 5. 性能测试场景模型怎么设计
    • 6. 性能瓶颈定位思路
    • 7. 数据库性能问题怎么排查
    • 8. 服务器监控指标怎么看
    • 9. 性能测试报告怎么写
    • 10. 性能调优建议怎么表达
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

6. 性能瓶颈定位思路

性能瓶颈定位是性能测试面试中最能拉开差距的问题。会跑 JMeter 的人很多,但能根据响应时间、TPS、错误率、CPU、内存、数据库、线程池、连接池、GC、日志等信息定位瓶颈的人不多。面试官问瓶颈定位,真正想听的是你的分析路径,而不是随便说“可能是数据库问题”。

性能瓶颈定位要遵循一个原则:先看现象,再看资源,再看链路,最后验证猜想。不要一上来就下结论。

一、先描述现象

性能问题常见现象:

  • 响应时间升高;
  • TPS 上不去;
  • TPS 下降;
  • 错误率上升;
  • 超时增多;
  • CPU 打满;
  • 内存持续上涨;
  • 数据库慢 SQL;
  • 连接池耗尽;
  • MQ 积压。

不同现象对应不同排查方向。

二、看压测结果趋势

先看三条曲线:

  • 响应时间;
  • TPS;
  • 错误率。

如果并发增加后,TPS 不再增长、响应时间继续升高,说明系统达到瓶颈。

如果错误率上升,要看是 HTTP 错误、超时、业务错误还是断言失败。

三、看应用服务器资源

应用服务器关注:

  • CPU 使用率;
  • Load;
  • 内存;
  • GC;
  • 线程数;
  • 线程池队列;
  • 连接池;
  • 日志错误。

CPU 高可能是计算密集、锁竞争、频繁 GC 或代码循环问题。

CPU 不高但响应慢,可能是等待数据库、网络、外部服务或锁。

四、看数据库

数据库是常见瓶颈。

关注:

  • 慢 SQL;
  • SQL 执行计划;
  • 索引是否命中;
  • 连接数;
  • 锁等待;
  • 行锁表锁;
  • CPU 和 IO;
  • buffer pool;
  • 主从延迟。

如果应用 CPU 不高,但数据库 CPU 或慢 SQL 很高,重点排查数据库。

五、看缓存 Redis

Redis 瓶颈可能表现为:

  • 响应时间升高;
  • 热 key;
  • 大 key;
  • 连接数过高;
  • 命中率低;
  • 缓存穿透;
  • 网络 IO 高。

如果大量请求打到数据库,可能是缓存失效或命中率低。

六、看 MQ

异步链路要看 MQ。

关注:

  • 消息积压;
  • 消费速度;
  • 消费失败;
  • 重试次数;
  • 死信队列;
  • 消费者线程数。

接口返回快,但最终状态延迟,可能是 MQ 消费瓶颈。

七、看网络和网关

网络或网关问题可能导致:

  • 连接超时;
  • 502/503/504;
  • 响应波动;
  • 带宽打满;
  • Nginx 连接数限制;
  • 网关限流。

要区分服务自身慢和网关层慢。

八、看压测机自身

有时瓶颈不在被测系统,而在压测机。

检查压测机:

  • CPU;
  • 内存;
  • 网络带宽;
  • JMeter 堆内存;
  • 线程数;
  • 是否开启大量监听器。

如果压测机资源打满,测试结果不可信。

九、定位路径示例

现象:并发增加到 500 后,TPS 不再上涨,响应时间从 300ms 升到 3s,错误率增加。

排查:

  1. 看应用 CPU,发现不高;
  2. 看应用日志,有数据库连接等待;
  3. 看数据库连接池,连接数打满;
  4. 看慢 SQL,有订单查询未走索引;
  5. 优化索引后复测,响应时间下降,TPS 上升。

这就是完整定位闭环。

十、常见错误

  • 只看 JMeter 报告;
  • 一上来就说数据库慢;
  • 不看压测机资源;
  • 不区分 HTTP 错误和业务错误;
  • 不看日志;
  • 没有复测验证;
  • 没有保留监控截图和数据。

十一、面试回答模板

如果面试官问“性能瓶颈定位思路”,可以这样回答:

我定位性能瓶颈会先看压测结果趋势,包括响应时间、TPS 和错误率,判断是在什么压力点出现拐点。然后看应用服务器资源,比如 CPU、内存、Load、GC、线程池和连接池。如果应用 CPU 高,可能是代码计算、锁竞争或 GC;如果 CPU 不高但响应慢,可能是在等数据库、缓存、MQ 或外部服务。接着看数据库慢 SQL、连接数、锁等待和索引命中,再看 Redis 热 key、大 key、命中率,MQ 是否积压,网关是否限流。同时也要检查压测机自身资源,避免压测机成为瓶颈。定位后要做优化并复测,形成闭环。

十二、练习清单

  1. 分析响应时间升高;
  2. 分析 TPS 上不去;
  3. 分析错误率升高;
  4. 看应用 CPU;
  5. 看数据库慢 SQL;
  6. 看连接池;
  7. 看 GC;
  8. 看 Redis 命中率;
  9. 看 MQ 积压;
  10. 写瓶颈定位案例。

性能瓶颈定位不是猜,而是基于现象、指标、日志和复测形成证据链。

配套刷题:

  • 性能测试面试题
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
5. 性能测试场景模型怎么设计
Next
7. 数据库性能问题怎么排查