本次测试的内容是一个半价秒杀购车活动
登陆后,如果之前预约活动有预约成功过,那么就有资格进行抢购活动,如果之前活动没参与预约,那么会提示:你未预约没有抢购资格。
之前预约活动有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