hogwarts
(霍格沃兹测试学院官方)
1
题目:压测中平均 RT 很稳,但 TP99/TP999 每隔几分钟出现一次规律性尖刺,吞吐同步掉坑。面试官问:你怎么定位?说说思路和可能原因。
难度:高级
题型:面试口述题
hogwarts
(霍格沃兹测试学院官方)
2
参考答案/答题要点:
口述按「先定位层,再找周期性来源,最后验证」三段说:
-
先量形态:毛刺间隔多久、持续多久、是否整点/半点触发。规律周期(5 分钟、1 分钟)几乎都指向定时任务、GC、监控采集、缓存批量过期,而不是随机流量抖动。
-
分层拆 RT:网关/LB、应用、缓存、DB、下游依赖分别打耗时埋点,同一时间轴对齐曲线,先看尖刺发生在哪一层(只有 DB 层抖→DB;应用层抖但下游不抖→进程内)。
-
对齐事件日志:GC 日志(Full GC / STW 停顿时长)、日志切割与压缩、
cron 定时任务、配置中心推送、监控 agent 抓取、容器健康检查、发布或弹性扩缩容。JVM 场景用 jstat/GC viewer 或 async-profiler 火焰图对尖刺时间点采样。
-
资源侧检查:连接池是否瞬时打满(获取连接等待)、线程池队列堆积、磁盘 IO 抖动与云盘限流、CPU 被 sidecar 抢占、网络重传率。
-
数据与缓存:缓存集中过期导致击穿、热点 key 重建、大 key 扫描、DB 主从延迟、备份/统计任务、慢查询、缓冲池刷脏页。
-
压测端自身:被测端 JVM 停顿、压测机 CPU 打满、长连接复用不足、日志同步写、JMeter 监听器太重——先排除"自己把系统压出问题"。
-
验证与闭环:单变量复现(摘掉某个定时任务/关掉某缓存重跑同基线)、单机与集群对比;给出优化方案(GC 参数或换 ZGC、错峰、缓存 TTL 加随机抖动、连接池扩容、慢 SQL 改写),并用同一模型回归,对比优化前后 TP99 曲线。
一句话收口:毛刺排查的核心是时间轴对齐 + 分层归因,不看平均值只看分位数的变化形状。