项目总结57:使用阿里云性能测试-电商系统并发测试

 

第一步:部署测试环境

  1-单独部署测试服务,是为了尽量不影响正式环境,并尽量保证硬件和软件上,测试环境和正式环境一致

  2-目前一共4台服务器:一台阿里云SLB服务器,一台RDS数据库服务器,两台ECS服务器(tomcat、redis、kafka,mongodb君部署在ECS服务器)

  3-测试环境(完全模拟真实环境):

    数据库:在RDS重新创建新的数据库,命名:xuegao_rds_test;数据库配置信息

    Redis:在从服务器创建新的Redis客户端,端口号:6379; redis版本如下

[root@izbpm9uyt0vepwz bin]# redis-cli --version
redis-cli 3.2.9

    Kafka:在从服务器部署kafka; kafka在Linux安装参考:https://www.cnblogs.com/wobuchifanqie/p/11687234.html

    Tomcat服务:在两台正式服务器部署一套完全一样的项目服务,端口号8088;阿里云ECS服务器配置如下:

 

 

 

第二步:确认测试内容
  1-测试接口,如下

 

 

  2-用户数量: 5000小程序用户;500APP用户

  3-测试流程:10分钟内,5000个线程,5000粉丝和500店主陆续登陆小程序或APP,陆续请求接口;预计10分钟内接口请求数量5000*37=185000次????

 

第三步:编写Jmeter测试脚本并本地测试

  1-Jmeter测试脚本编写可参考:https://www.cnblogs.com/wobuchifanqie/p/12070734.html

  2-考虑模拟真实用户数据,我们将正式数据库同步一份到测试数据库,并通过Jemeter CSV 配置文件提前准备号用户Token以及相关商品ID等信息;Jemter相关目录如下

 

 

   

第四步:上传脚本到阿里云性能测试进行测试(具体操作可以参考阿里云文档)

 

 

 

 

 

 

 

第五步:查看测试报告

 

第六步:分析测试报告(以下分析是基于多次测试的结果)

  分析结果报告以及相关失败的具体原因,发现:

    1-一部分错误是因为接口返回的特殊情况,比如商品不存在,也被是为错误(其实是接口容错处理);针对这类问题,进行了响应断言设置,默认为成功;

    2-出现Redis的RedisConnectionFailureException,即连接失败,继续跟进问题,发现是因为Redis连接超时问题(项目对几乎全部的查询接口做了缓存);针对这类问题,做了两个优化处理:

      1-优化Redis配置,增加Redis最大连接数等相关参数;

      2-考虑到在ECS服务器部署Redis,硬件性能会有瓶颈;我们购买阿里云数据Redis,Redis数据库配置如下:

 

 

 

 

第七步:优化后重新测试(同时增加了测试时时长5min->20min),结果如下

 

   1-分析数据,错误率由原来的1.12%降到0.02,说明前面的优化是有效果的;

 

几个问题说明

  1-Jemeter有个比较恶心的问题,不能在URL后面和body后面同时加请求参数;导致项目部分接口无法参与测试

  2-类似购物车和提交订单接口,是需要根据实际情况提供重写的测试接口(逻辑和正式接口一样,请求方式或参数稍有区别);

  

 

posted on 2020-02-24 13:54  我不吃番茄  阅读(1102)  评论(0编辑  收藏  举报