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

  • 相关阅读:
    Flipboard web移动端-打造每秒60帧的流畅体验
    android开源代码演示项目CodeBox
    Material风格的文件管理器
    android:ToolBar详解
    GossipView:圆圈布局的自定义view
    9个完整android开源app项目
    android-波浪效果ripple-background
    Android Studio 简单介绍和使用问题小结
    ActionItemBadge:在actionbar上显示badge数字提示
    在ContentResolver中使用Group By
  • 原文地址:https://www.cnblogs.com/111testing/p/11437796.html
Copyright © 2011-2022 走看看