zoukankan      html  css  js  c++  java
  • 秒杀功能压测 jmeter--------重要!!!

    线程组里面有三个接口请求,依次为:显示商品列表、登录秒杀平台账户、进行秒杀

    对线程组用5000个线程循环10次

    设置一下默认配置,之后就不用反复填写了

    设置配置文件
    这个具体功能就是读text文件并且设置变量的作用。

    设置HTTP 请求
    我们这次直接对秒杀功能进行压测,填写的路径如图所示,这个要参见之前的代码。访问这个路径时需要两个变量,其中token是从之前的文本文件中读取的(也可以从登录接口正则获取到),注意Value的语法(如何写的)。

    结果展示

    第一次运行的结果:

     TPS:630.9/sec(不高)
    错误率:64.73%(太高了)
    错误率太高了,看一下程序,抛异常了。

    Redis异常

     很明显,这样的并发下Redis读取超时了。贴出Redis的配置:

     数据库超卖现象

     这是秒杀商品表,我们是对商品1进行秒杀的,库存成为负值,问题大了。我之前设置的秒杀商品个数给了9件,现在超卖了22件。

    第二次运行结果

    为了客观表现结果,重新再运行一次。注意把数据库信息清空的清空,恢复的恢复;把JMeter上次结果清空。

    压力报告结果:

     TPS:808.5/sec(不高)

    错误率:67.16%(太高了)

    Redis异常

    和第一次一样,就不贴图了。

    数据库超卖现象

    4. 总结

    这次实战结果就是:1. Redis读取超时抛异常导致压测的错误率太高;2. TPS不高,说明系统性能不佳;3. 数据库出现超卖现象,严重的业务逻辑错误

     

    5. 解决异常

    程序抛异常,这是不应该产生的,先将抛异常的问题解决。
    我一开始先把redis连接池重新配置:

     运行后发现程序不抛异常了,但是压测的错误率并没有下降,依然在60%以上,意识到这可能不是简单改动程序就行了。

    查看了压测的日志,也并没有报错,如果大家有遇到类似的问题,参考博文:

    https://www.cnblogs.com/111testing/p/11437815.html

    主要原因是:Windows 提供给 TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收他们。就导致我们在短时间内跑大量的请求时将端口占满了。

    这个方法我试过了,用了这个方法可以把错误率大大降低,但是如果把并发调大还是会出现错误

    所以我想是不是本身就是我单机性能有限。可以把并发线程和循环次数适当调小。

    原文链接:https://blog.csdn.net/Serena0814/article/details/89648174

  • 相关阅读:
    JS实现对Date Range的认证
    SharePoint 用SafeControl的方式创建能够重复利用的Control
    设计模式详解(链接)
    Asp.net MVC3中进行自定义Error Page
    手动将自定制的WebPart部署到 SharePoint 2010 中
    获取 SharePoint 2010 中所有的User Profile Service Application
    自定义Data Service Providers — (5)最小化的运行时服务
    温总理对软件工作者的勉励
    自定义Data Service Providers —(9)关系
    自定义Data Service Providers — (7)交互式查询
  • 原文地址:https://www.cnblogs.com/111testing/p/11437796.html
Copyright © 2011-2022 走看看