zoukankan      html  css  js  c++  java
  • 秒杀抢购活动性能测试记录

    本次测试的内容是一个半价秒杀购车活动

     

    登陆后,如果之前预约活动有预约成功过,那么就有资格进行抢购活动,如果之前活动没参与预约,那么会提示:你未预约没有抢购资格。

    之前预约活动有12W人预约成功,那么秒杀活动开始的时候规则是:第一个请求响应的人能中这个名额,其它的全部都会提示:抢购失败

    中间还有个规则是:在点击抢购按扭后,会弹出验证码,验证码输入正确验证OK后,才真正提交抢购post

    那么问题来了:并发存在2处:

    1、验证码

    2、抢购接口post接口

    分析压力大小:

    因为之前没有积累线上数据,所以并不知道真实的压力会有多大,所有各方给不出一个目标,只能朝单位机器下应用的极限来并发压测

    因为有12W人已预约成功,届时秒杀活动优惠达5W之高,活动力度之大,可谓为压测增加了困难,预估抢购活动那10分钟,可能会有12W请求,且活动并发达到一个未知比较大的值,为啥说未知呢,因为所有人都给不出这个数据,光追着我要极限值,我也是无语了。极限值 只存在特定情况下。

    我的分析:

    1、使用LR,最大的用户数10000,集合点设置10000,算是极限值了。这个极限值并不是我的应用的极限值,是我并发工具的极限值,LR允许的最大用户数就是10000

    2、机器绝不会只有1台,即使1台测试了也没意义,线上至少要2台以上。因为验证码前期测试的时候性能较差,所以我索性用了7台后端

     

    脚本分析:

    1、验证码

    (1) 验证码,只用在脚本中检查是否有出来验证码图片,就行了。出不来图,证明加载不出来。也是有问题的。要统计这个错误率。

    2、抢购post接口

    (1) 大并发下,验证业务逻辑,确认接口返回的信息,不存在“活动未开始”“没有预约”,只能是1个成功,其它全是抢购失败提示

    (2) 大并发下,抢购成功的uid与实际入库UID一致,且数据量对等。

    (3) 大并发下,单位时间内看错误率

    解决的一些LR工具配置错误:

    1、captcha_info.c(6): Continuing after Error -27780: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "t-captcha.pcauto.com.cn" failed: [10054] Connection reset by peer

    captcha_info.c(6): Continuing after Error -27776: Server "t-captcha.pcauto.com.cn" shut connection during attempt to negotiate SSL session

     

    原因是LR不支持SSL,在脚本中打开录制选项-options-network-port Mapping-add entry

    证书pem,一般情况下存在于Tengines读取的SSL证书目录下,导出在本地,然后在LR配置中上传即可。

     

    注意:

    去掉

     

    去掉

     

    2、The load generator is currently running the maximum number of Vusers of this type

     

    以抢购脚本为例分析:

    这个接口返回的数据是json内容,然后app弹出提示

     

    因为我要检查活动进行中,大并发量下的,各类返回结果对不对,和确认结果正确性。

    脚本:

    集合点设置:

     

    场景中跑hello这个action即可

     

    策略设置:

     

    压力结果:

     

    压力结果分析:

    工具并发1W,请求可以确认1W/s同时去发,但是因为受网速、响应速度、resin允许最大线程数配置限制(resin配置256,超过256个请求同时过来的时候,就会等待,所以会不是完全的并发,虽然工具发了请求,但实际请求没有到应用层),那么为了核对真正的并发。我对accesslog分析每秒具体是有多少条日志过来。经分析,

     

    实际每秒并发处理只有最高5200+

    所以可以得出,每秒1W请求/s,实际只响应得了最高5K/s

  • 相关阅读:
    为什么不直接使用socket ,还要定义一个新的websocket 的呢
    js-权威指南-Web套接字
    CSS-蜂窝状展示区域(多个六边形)的一种实现方式
    MQTT入门介绍
    【珍惜时间】vuepro
    搭建react的vw架构时候报 Cannot load preset "advanced".
    跟我一起使用create-react-app脚手架搭建vw-layout解决方案
    【珍惜时间】iReport
    vue中 给router-view 组件的 绑定 key 的原因
    SQL Server Index详解
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/11898275.html
Copyright © 2011-2022 走看看