压力测试
定义
压力测试是一种非功能测试,用来评估系统在高负载、极端压力下的表现。它的目的是让系统不能正常工作,压垮它,看看会在哪里坏、怎么坏、坏得是否优雅。
压力测试=把系统压到极致,观察性能瓶颈和系统崩溃点。
压力测试和性能测试的关系
| 测试类型 | 目的 |
|---|---|
| 性能测试 | 测试正常负载下的性能(响应时间、TPS、QPS、吞吐量) |
| 负载测试 | 测试逐步增加负载时间时系统何时达到最大并发 |
| 压力测试 | 超过最大负载后继续加压,直到崩溃 |
| 稳定性/耐久测试 | 长时间运行系统,观察是否泄露、积累错误 |
压力测试是性能测试的一种,属于极限破坏类测试。
压力测试的目的
- 找出系统性能瓶颈(CPU、内存、数据库、IO、网络)
- 找出系统最大承载能力上限
- 观察系统在高压下的:稳定性、可用性、恢复能力
- 发现潜在的:死锁、内存泄漏、线程池耗尽、数据库连接耗尽、队列积压、超时、错误率上升
压力测试流程
- 确定测压目标
- 确定压测指标
- 编写压测脚本
- 准备测压环境
- 执行压力测试:超过负载逐步加压,直到系统出现明显异常
- 记录日志和监控
- 分析瓶颈并优化
- 重新测压验证优化效果
压力测试中的关键指标
- 性能指标
- QPS(每秒查询数)
- TPS(每秒事务数)
- RT(响应时间)
- 吞吐量(MB/s)
- 资源指标
- CPU、内存(Heap/Non-Heap)
- 磁盘IO
- 网络带宽
- 线程数/线程池状态
- GC次数/停顿时间(Java)
- 系统指标
- 错误率(Error%)
- 超时率
- 成功率
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 JasmineRain's blog!
评论
