压测学习
要求:满足100并发500ms性能要求
压测场景
- 新系统上线支持 在新系统上线前,通过执行性能压测能够对系统的负载能力有较为清晰的认知,从而结合预估的潜在用户数量保障系统上线后的用户体验。
- 技术升级验证 在系统重构过程中,通过性能压测验证对比,可以有效验证新技术的高效性,指导系统重构。
- 业务峰值稳定性保障 在业务峰值到来前,通过充分的性能压测,确保大促活动等峰值业务稳定性,保障峰值业务不受损。
- 站点容量规划 通过性能压测实现对站点精细化的容量规划,指导分布式系统机器资源分配。
- 性能瓶颈探测 通过性能压测探测系统中的性能瓶颈点,进行针对性优化,从而提升系统性能。
如何做压力测试?
- 分析性能目标和指标
明确服务资源配置、环境,尽可能跟生产环境靠近
测试接口 + 预期目标
- 确定性能测试方案
- 编写测试脚本
- 执行性能测试,同时关注性能数据
- 分析和复盘本次性能测试,然后输出性能测试报告
- 作为研发,观察服务器 CPU、内存占用率,以及相关中间件(MySQL、Redis、ES 等占用率)
内存利用率 最大 44.7%,最小 33.3%
mysql
Redis
注意事项
压测的目的是在于找到系统的瓶颈,一定是要确定系统某个方面达到瓶颈了,压力测试才算是基本完成。
工具选择
工具 | wrk | ab | locust | jmeter |
---|---|---|---|---|
安装 | 简单 | 简单 | 依赖 python | 依赖 jdk |
场景压测 | 不支持 | 不支持 | 支持 | 支持 |
UI 界面 | 无 | 无 | 有 | 有 |
脚本录制 | 无 | 无 | 无 | 利用本地 ProxyServer 或 badboy |
资源监控 | 无 | 无 | 无 | 通过 JMeterPlugins 插件和 ServerAgent 实现 |
报告分析 | 无 | 无 | 无 | 生成 HTML 报告 |
参考资料
性能测试工具 wrk,ab,locust,Jmeter 压测结果比较
怎样正确做 Web 应用的压力测试?
【新手必读】关于压力测试不得不说的二三事