首页/开发/软件测试速查/浸泡测试与泄漏检测

浸泡测试与泄漏检测

浸泡测试长时间运行以捕捉内存泄漏、连接泄漏与句柄增长:监控 RSS、堆、连接数与线程数随时间的斜率,周期性尖峰再结合 GC 与定时任务解释。

软件测试速查开发更新于 2026-10-13

浸泡测试与泄漏检测

浸泡测试长时间运行以捕捉内存泄漏、连接泄漏与句柄增长:监控 RSS、堆、连接数与线程数随时间的斜率,周期性尖峰再结合 GC 与定时任务解释。时长要覆盖业务的完整周期(如日切、批处理窗口),否则关键路径没有被观测到。

基本信息

观测项RSS、堆占用、打开连接数、线程数与句柄
判定思路随时间单调上升且不回落,疑似泄漏
辅助信号GC 日志、缓存清理与定时任务日志
时长设计覆盖完整业务周期(日切、批处理)
环境要求浸泡环境尽量独占,避免外部任务干扰
时间对齐监控图表与压测时间轴对齐
基线对比与上一版本同场景曲线对比找差异
采样频率观测指标按分钟级记录,避免过粗

观测项与判定

观测项与判定
RSS / 堆占用 / 打开连接数 / 线程数
判定:随时间单调上升且不回落 -> 疑似泄漏
配合:周期性任务与缓存清理日志解释尖峰
# 图表与压测时间轴对齐,尖峰可归因

典型使用场景

  • 长稳验证:新版本上线前跑 12 或 24 小时浸泡。
  • 泄漏定位:对比版本间的斜率变化找引入点。
  • 连接池评估:观察连接数长升不降的池泄漏。
  • GC 调优:结合 GC 频率与堆曲线验证参数效果。
  • 定时任务验证:观测周期性任务是否累积残留。
  • 回归保障:大版本前固定浸泡项进入发布检查。
  • 凌晨窗口利用:夜间跑浸泡,白天分析曲线。
  • 共享看板:浸泡期把关键曲线接到团队看板随时可看。
跑几十分钟就下「无泄漏」结论,时间尺度不足。
只看总量不看斜率,会把缓存预热误判为泄漏。
浸泡环境要独占:外部任务干扰会让曲线无法归因。
泄漏判定要排除正常增长:连接池与缓存预热都存在平台期。

易错点

  • 跑几十分钟就下「无泄漏」结论,时间尺度不足。
  • 只看总量不看斜率,把缓存预热误判为泄漏。
  • 浸泡环境混部其他任务,干扰观测无法归因。
  • 时长未覆盖日切与批处理窗口,关键路径漏观测。
  • 只看单指标上升就定案,缺少堆与 GC 交叉验证。

数据来源与参考

  • Google SRE Workbook(长时运行与资源排查)
  • JDK 官方工具文档(jcmd GC.heap_info)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌