全部产品

业务迁移场景下的性能压测

更新时间:2019-07-16 21:26:32

性能测试是开发运维过程中,用于预估系统性能瓶颈的常规手段,本文源于客户案例,与您分享在迁移企业网站过程中的性能压测实践,分为业务场景、业务指标、业务流程、压测配置信息和压测过程及结论五部分。

业务场景

日常任务管理网站从本地 IDC 机房迁移上云时,需要提前评估系统的性能瓶颈。

业务指标

  • 满足对集团内的1000用户的并发访问。

  • 300用户数并发对日程进行创建、修改、删除等操作。

  • 100用户数并发登录。

  • 在并发较高的情况下,用户不需要等待过长时间。

业务流程

  • 用户登录:登录用户的信息来自文件输入。

  • 创建日程:日程信息为随机生成。

  • 日程修改:由上一个创建事件输出的 ID 进行修改。

  • 查看日程:随机获取月、周、日的日程信息。

压测配置信息

  1. 资源包购买:因目标是各 API 的并发之和为2000,故购买峰值5000并发的资源包。

    206

  2. 业务上是一个流式过程,故放在一个串联链路中,按照业务模型进行 API 配置:

    1. 接口:login,输入参数:username、password,来源文件参数;
    2. 接口:newSchedule,输入参数:taskInfo,输出参数:taskID,eventState;
    3. 接口:setSchedule,输入参数:taskID, taskInfo,输出参数 eventState;
    4. 接口:getSchedule,输入参数:taskID,输出参数:taskInfo,eventState;
    5. 接口:delSchedule,输入参数:taskID,输出参数:eventState。
  3. 压力配置:并发模式,递增百分比为 10%,起步设为 10%。

    207

  4. 监控信息:采用 PTS 集成的监控功能。

    208

压测过程及结论

  1. 第一次压测,按照10%的施压配置进行测试,每次递增10%(每次持续1分钟),到40%时开始发现,和日程相关的 API 请求成功率开始下降,经DMS、CloudMonitor等工具排查后,诊断为数据库死锁导致。

    经过分析,死锁原因是项目中事务调用产生的 PAG 范围锁引起,经过优化后恢复正常。

  2. 第二次压测,直接全局调速40%, 当压力测试进行到80%时,云监控上见到的ECS、RDS内存消耗超过90%,RT明显增高到4000+ms,并初现超时的情况。

    通过增加4个 ECS 节点,并对 RDS 进行升配,从而解决问题。

  3. 第三次压测,直接全局调速70%, 整体系统运行正常,施压到100%时getSchedule偶发会出现 RT 过大或者直接错误的问题。经过一系列排查,该 API 调用参数范围过大时会导致处理时间过长或者直接提示超时。

    调整 Tomcat 连接超时时长,并对该 API 输入参数范围进行限制,解决了该问题。

  4. 第四次压测,施压配置从10%升高到100%,压测过程中,在100%压测5分钟的情况下,系统 RT 稳定,无失败的情况出现,系统利用率较好。

亲测感受:

优势

文档详细,开箱即用,配置及操作简单,可在控制台上完成一系列的操作。

产品细节

域名绑定 IP 即可对单点做性能测试,例如实例及 ARMS 监控集成,都方便了开发者在压测时的操作,再例如可以动态去调速全局或单个串联链路,提升了测试效率。

关于并发虚拟用户、RPS、TPS的区别可以参考官方文献:并发虚拟用户、RPS、TPS的解读