15 稳定性测试(浸泡测试)怎么做?怎么发现内存泄漏?
2026/9/14...大约 2 分钟
15|稳定性测试(浸泡测试)怎么做?怎么发现内存泄漏?
开场先讲设计参数——浸泡测试读的是「斜率」不是「点」,这个认知是本题核心。
回答思路
第一步:稳定性测试的设计参数
- 负载:日常峰值的七八成(不压极限,模拟真实持续运转)
- 时长:按业务周期定——核心系统至少 24 小时、大促前 72 小时甚至更长
- 场景:混合流量模型贴近真实分布
这三个参数的设计逻辑讲清,浸泡不是随便挂一晚上。
第二步:讲观察什么
指标趋势而不是瞬时值:RT 是否缓慢劣化、TPS 是否逐步衰减、错误率是否累积、Full GC 频率是否越来越勤。
第三步:内存泄漏的判定方法(高分路径)
- 内存曲线锯齿上升且回收后的谷值持续抬高(每次 GC 后的最低点越来越高)——这是泄漏的典型形态
- 配合 jmap 定期导出堆快照,对比前后两个快照的对象增长
- 找到只增不减的对象类型,定位到代码
这条从曲线到代码的路径讲全,本题高分。
第四步:讲其他慢性病
连接泄漏(连接池曲线只降不升)、句柄泄漏(lsof 看句柄数持续涨)、线程泄漏(线程数爬坡)、日志膨胀占满磁盘——浸泡测试的价值就是抓这些小时级才暴露的问题。
收尾:讲频率
不是每个版本都做:核心系统周期性做(每月或每季度)、大改版后必做、大促前必做——稳定性测试是重炮,按需拉。
考察重点
| 维度 | 说明 |
|---|---|
| 企业动机 | 线上挂掉往往不是被压垮而是慢性病发作——浸泡测试是唯一能提前暴露慢性病的手段,会设计浸泡方案的人是专项老手 |
| 过线标准 | 参数设计逻辑 + 内存曲线判泄漏 |
| 区分度 | 讲 GC 谷值抬高、堆快照对比定位的是真排查过泄漏的;只说「跑一晚上看看」的是没做过 |
| 加分项 | 句柄、连接、线程这些多类型泄漏的排查手段 |
| 减分项 | 认为稳定性测试是浪费时间(「跑两个小时不就行了」),认知不到位 |
来源
整理自知识星球帖《面试情报 04|性能测试 20 题》,返回题库。