分析业务场景
- 深入了解性能问题对象并对性能问题进行粗略评估
- 了解服务的整体架构、对应的服务器信息,熟悉系统应用
准备压测环境
- 确定被测系统、要进行压测的接口
- 梳理压测接口以及接口的依赖上下游
- 确定本次压测接口的最高QPS
- 制定应急方案,确保执行测试出现异常时,能够及时处理
- 准备监控平台,用于监控当前测试的状态以及各项性能指标
- 编写压测脚本用例、制作用例流,合理地配置场景(根据用户量、思考时间、步长、压测时长)
执行性能测试
- 在执行性能测试时,若某个接口需要压1000 QPS。我们不会让它立马上涨到 1000,可以设置100 QPS为初始值,增长的步长也为100(预发环境一般把步长和思考时间设置成0,加大压力)
- 如果直接对线上环境的接口进行压测,设置步长能保证线上服务不受影响,否则一下子提到很高的QPS,服务器可能会压崩溃
监控与分析
- 要时刻对CPU、内存资源消耗量进行监控,一旦发现异常要及时处理
- 对用户并发量、平均响应时间、每秒事务数、数据包响应的状态码进行分析
- 监控与分析的过程中要对问题进行初步定位
定位与调优
- 在性能测试的指标发现异常后(如监控平台报警,错误码返回5xx等),就需要与开发配合,让开发优化代码修复性能问题
- 根据定位到的瓶颈点针对性解决,包括应用性能调优,系统部署优化
- 性能测试发现的常见问题有接口读取数据超时,优化方式一般是:
分析慢查询报告,优化SQL查询语句
修改或优化索引
增加 Redis 缓存直接从缓存读取数据
并发优化
验证与报告
- 综合考虑调优方式,不断验证
- 在优化代码完成后,再次进行性能测试,与准备阶段的指标进行对比,观察数据指标是否正常,若已经达到预期效果则可以发送性能测试报告,完成本次压测