美文网首页
柚币抽奖压测报告

柚币抽奖压测报告

作者: 蘑菇姐夫 | 来源:发表于2017-07-19 21:23 被阅读0次

    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

    相关文章

      网友评论

          本文标题:柚币抽奖压测报告

          本文链接:https://www.haomeiwen.com/subject/unmecxtx.html