题目:接口压测中,并发从 50 加到 200,TPS 从 300 涨到 320 后不再增长,平均响应时间从 160ms 涨到 620ms,错误率始终为 0。监控显示:应用服务器 CPU 利用率仅 30%,内存正常,网卡带宽利用率 < 10%,GC 无长停顿。最可能的瓶颈是?
A. 应用服务器 CPU 计算能力不足
B. 下游依赖成为串行等待点(数据库连接池不足/慢 SQL/第三方接口超时),线程大量处于 WAITING、BLOCKED
C. JVM 频繁 Full GC 导致 STW
D. 压测机网络带宽被打满
难度:高级
题型:笔试(单选)
参考答案/答题要点:
B。
- 判据:CPU 空闲 + RT 随并发近乎线性上升 + 错误率 0 + TPS 平台期,是典型的等待型瓶颈(利特尔法则:TPS = 并发数 / RT,RT 涨多少吞吐就涨不动多少)。
- A、C、D 与监控数据直接矛盾:CPU 30% 不是计算瓶颈;GC 无长停顿;带宽 <10%。
- 下一步动作(面试加分):连续 3 次线程 dump 看是否都卡在同一栈(JDBC/HttpClient
getObject、parking)→ 看连接池active/maxWait与等待线程数 → DB 侧看慢 SQL、锁等待、threads_running→ 全链路 trace 拆分段耗时,确认瓶颈在自身代码还是依赖。 - 顺带区分:若表现为 TPS 抖动 + 错误率上升,多半是超时/线程池拒绝;若 CPU 100% 而 RT 稳定,才是算力或代码热点,上 Arthas
profiler火焰图。