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


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

      

  • 相关阅读:
    jquery.ajax,vue-resource,axios拦截器实现与携带cookie
    vs code 常用插件及说明
    Js/Jquery获取网页屏幕可见区域高度(转)
    vue的爬坑之路(三)之-----基于vue-cli的VueAwesomeSwiper轮播滑块插件的使用及常见问题(转)
    js中的深拷贝与浅拷贝
    沉浸式状态栏 关于状态栏高度的获取
    Cordova 常用命令及插件(转)
    video control
    canvas添加水印
    疑惑
  • 原文地址:https://www.cnblogs.com/wobuchifanqie/p/12336439.html
Copyright © 2020-2023  润新知