浸泡测试与泄漏检测
浸泡测试长时间运行以捕捉内存泄漏、连接泄漏与句柄增长:监控 RSS、堆、连接数与线程数随时间的斜率,周期性尖峰再结合 GC 与定时任务解释。时长要覆盖业务的完整周期(如日切、批处理窗口),否则关键路径没有被观测到。
基本信息
| 观测项 | RSS、堆占用、打开连接数、线程数与句柄 |
|---|---|
| 判定思路 | 随时间单调上升且不回落,疑似泄漏 |
| 辅助信号 | GC 日志、缓存清理与定时任务日志 |
| 时长设计 | 覆盖完整业务周期(日切、批处理) |
| 环境要求 | 浸泡环境尽量独占,避免外部任务干扰 |
| 时间对齐 | 监控图表与压测时间轴对齐 |
| 基线对比 | 与上一版本同场景曲线对比找差异 |
| 采样频率 | 观测指标按分钟级记录,避免过粗 |
观测项与判定
观测项与判定
RSS / 堆占用 / 打开连接数 / 线程数
判定:随时间单调上升且不回落 -> 疑似泄漏
配合:周期性任务与缓存清理日志解释尖峰
# 图表与压测时间轴对齐,尖峰可归因典型使用场景
- 长稳验证:新版本上线前跑 12 或 24 小时浸泡。
- 泄漏定位:对比版本间的斜率变化找引入点。
- 连接池评估:观察连接数长升不降的池泄漏。
- GC 调优:结合 GC 频率与堆曲线验证参数效果。
- 定时任务验证:观测周期性任务是否累积残留。
- 回归保障:大版本前固定浸泡项进入发布检查。
- 凌晨窗口利用:夜间跑浸泡,白天分析曲线。
- 共享看板:浸泡期把关键曲线接到团队看板随时可看。
跑几十分钟就下「无泄漏」结论,时间尺度不足。
只看总量不看斜率,会把缓存预热误判为泄漏。
浸泡环境要独占:外部任务干扰会让曲线无法归因。
泄漏判定要排除正常增长:连接池与缓存预热都存在平台期。