企业应用云上性能测试
【业务场景】日程任务管理网站从本地IDC机房迁移上云,在业务切换到云上时需要提前预估下系统性能情况。
【业务指标】 满足同时对集团内的1000用户数并发访问,300用户数并发对日程进行创建、修改、删除等操作,100用户数并发登录。在并发较高的情况下不会产生用户需要等待过长响应时间。
【业务流程】
- 用户登录:登录用户的信息来自文件输入
- 创建日程:日程信息为随机生成
- 日程修改:由上一个创建事件输出的id进行修改
- 查看日程:随机获取月、周、日的日程信息
【压测配置信息概要】
- 资源包购买:因目标是各api的并发之和为2000,故购买峰值5000并发的资源包。
- 业务上是一个流式过程,故放在一个串联链路中,按照业务模型进行API配置:
i.接口:login,输入参数:username、password,来源文件参数
ii.接口:newSchedule,输入参数:taskInfo 输出参数:taskID, eventState
iii.接口:setSchedule,输入参数:taskID, taskInfo 输出参数eventState
iv.接口:getSchedule,输入参数:taskID,输出参数:taskInfo, eventState
v.接口:delSchedule,输入参数:taskID输出参数:eventState
- 压力配置:并发模式,每个API按照 100:300:300:1000:300的最大并发配置,起步设为10%。
- 监控信息:采用PTS集成的监控功能(确实很赞!!!)
【压测过程及结论】
- 首先测试按照10%的施压配置进行测试,每次递增10%(每次持续1分钟),到40%时开始发现有和日程相关的api请求成功率开始下降,经排查DMS、CloudMonitor等工具排查后诊断为数据库死锁导致。死锁原因经过分析后由于项目中事务调用产生的PAG范围锁,经过优化后恢复正常。
- 第二次压测直接全局调速40%, 压力测试进行到80%时在云监控见到的ECS、RDS内存消耗超过90%,rt明显增高到4000+ms并有超时的情况。进行ECS增加4个节点和RDS的升配之后问题解决。
- 第三次压测直接全局调速70%, 整体系统运行正常,施压到100%时getSchedule偶发会出现rt过大或者直接错误的问题。经过一系列排查该api调用参数范围过大时会导致处理时间过长或者直接提示超时,调整tomcat连接超时时长及对该api输入参数范围进行限制解决了该问题。
- 第四次压测,施压配置从10% - 100%,压测过程中及在100%压测5分钟的情况下系统rt稳定,无失败的情况出现,系统利用率较好。
**亲测感受:
非常喜欢PTS性能测试工具,对于新手了解文档说明后都可以开箱即用,配置及操作简单,都是可以在控制台完成一系列的操作。
对于产品设计有很多贴心的小细节,例如域名绑定IP即可对单点做性能测试,例如实例及ARMS监控集成都方便了开发者在压测时的操作,例如可以动态去调速全局或单个串联链路。对用使用者来说即高的提升了测试效率及便捷,很赞!!!**
附上压力测试过程中截图
关于并发虚拟用户、RPS、TPS的区别可以参考官方文献:
https://help.aliyun.com/document_detail/29343.html