柚币抽奖压测报告

1. 概率验证:

抽奖概率主要包括2个方面:

  • 奖品概率:后台设置奖品的获奖概率,验证抽奖获得的奖品是否符合概率分布;
  • 奖品概率浮动:当非默认奖品C的库存变为0时,默认奖品的获奖概率随之增加(增加值为非默认奖品C的获奖概率);

基于以上2点,我们设计奖品及概率分布如下表:

奖品列表 获奖概率 库存 是否默认
奖品A 40% 10000
奖品B 30% 10000
奖品C 30% 0
其他 0% 10000

测试的样本数目为1000次抽奖,需要得到的结果为:抽中奖品A的概率约为70%(即40%+30%),抽中奖品B的概率约为30%,抽中其他奖品的概率为0。

基于以上的设计,使用Jmeter工具模拟用户抽奖,结果符合预期,如下表:

image.png

注:我们在使用Jmeter时使用了断言的方式,即抽中奖品A返回true,其他false,同时,我们也通过检查结果树确认返回false的奖品均为奖品B。所以上表的错误率30.10%代表抽中奖品B的概率,69.90%表示抽中奖品A的概率。

2. 是否超卖验证

超卖可能出现的场景:当奖品数为1个时,再次多个用户请求抽奖,存在>1个用户抽到奖品。针对这种测试场景,确定测试方案如下:

将奖品库存设置为1,1000并发进行请求,验证只有1个用户抽奖成功,其他用户返回活动已下线。

根据上述方案,测试结果:无超卖现象。

3. 接口压测

本次主要针对2个涉及到性能的接口进行压测:柚币抽奖 & 获得额外奖品。压测结果如下:

接口名称 并发量 TPS 平均响应时间(ms)
柚币抽奖 48 18.7 2286
额外奖品 48 176.7 243

通过以上数据可知,柚币抽奖接口性能较低,低于预期,即柚币商城首页接口(tae_coin)的接口性能(TPS 约为60),上线风险较高。

下面针对柚币抽奖接口涉及到的接口做具体分析:

3.1 柚币中心接口

首先,先对柚币中心的查柚币、扣柚币、加柚币进行压测,该部分压测请厦门@翁秀妹@周泽润进行了协助。@翁秀妹在内网环境下,得出这3个接口的压测结果如下:

接口名称 并发量 TPS 平均响应时间(ms) CPU占用率 平均负载
查柚币 48 228 308 6% 1
扣柚币 48 126 559 18% 3
加柚币 48 447 102 56% 24

因为电商这边是通过公网与柚币中心进行交互,所以,我们又针对公网环境对上述3个接口进行了压测(48并发、5min),因柚币中心的服务器无法监控,我们仅给出接口对应的TPS和平均响应时间,如下表:

接口名称 并发量 TPS 平均响应时间(ms)
查柚币 48 36 1194
扣柚币 48 41.8 1030
加柚币 48 343.3 124

Jmeter数据如下:

查柚币


image.png

加柚币


image.png

扣柚币:


image.png

由上面数据可知,目前柚币中心接口经过改造后,扣柚币、查柚币接口在走外网的情况下TPS较低、平均响应时间较长。

然后,我们针对柚币抽奖、额外奖品接口进行压测,其中,柚币抽奖接口涉及到柚币中心的查柚币、扣柚币、加柚币接口,额外奖品如配置为柚币商品,则涉及到柚币中心的加柚币接口。这里为了验证电商独立业务代码,暂给额外奖品配置为非柚币商品。

3.2 柚币抽奖接口

压测方案:

并发数为48,稳压5min,利用332个不同用户不断地去抽奖,获得该接口的TPS和平均响应时间,同时监控服务器性能。

压测结果:
接口名称 并发量 TPS 平均响应时间(ms) CPU占用率(应用服务器) CPU占用率(数据库)
额外奖品 48 18.7 2286 12% 1%

Jmeter数据统计:


image.png

通过上面数据及代码日志,可知柚币抽奖的主要耗时集中在curl请求柚币中心的扣柚币接口上面,所以造成该接口耗时较长,其中查柚币已在柚币首页时进行了缓存优化,所以柚币抽奖接口不会调用查柚币接口。

代码log日志——记录功能模块耗时


image.png

3.3 额外奖品接口

压测方案:

并发数为48,稳压5min,利用332个不同用户不断地去领取额外奖品,获得该接口的TPS和平均响应时间,同时监控服务器性能。

压测结果:
接口名称 并发量 TPS 平均响应时间(ms) CPU占用率(应用服务器) CPU占用率(数据库)
额外奖品 48 176.7 243 80% 5%

Jmeter数据统计


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需...
    燕京博士阅读 4,145评论 0 16
  • 一般的抽奖管理功能,基本是在一个奖池中放一堆奖品,分别给它们设置不同的数量和概率,在奖品没有发完的情况下,...
    wwking阅读 10,108评论 3 16
  • 一般的抽奖管理功能,基本是在一个奖池中放一堆奖品,分别给它们设置不同的数量和概率,在奖品没有发完的情况下,概...
    wwking02阅读 3,818评论 1 4
  • 互联网压力性能Badboy.Jmeterhttp://itopic.org/jmeter-http-tcp.htm...
    燕京博士阅读 2,871评论 0 20
  • 想要坚持的,终于又将将呼呼的坚持了一个月,又是新的一个月,继续加油!继续咬牙坚持吧! 可怕的是每次在迎接新的一个月...
    只一点阅读 114评论 0 0