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

对线程组用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

秒杀功能压测 jmeter--------重要!!!的更多相关文章

  1. 秒杀功能压测 jmeter----------windows系统运行jmeter遇到的坑

    最近做了一个安全传输模块,因为怕对性能有较大影响,因此测试安排了针对性的压测 压测的过程出现了一点小问题 发现失败率特别高,测试怀疑是服务端出了错,但是我查看日志发现没有报错.后面我观察TCP链接数排 ...

  2. 并发压测 jmeter使用教程

    百度网盘下载软件 提取码: 2nur 第一步:首先从jmeter的官网下载jmeter,目前最新版本为4.0,支持的JDK最高为1.8 下载地址: jmeter:http://jmeter.apach ...

  3. newbee-mall 开源商城新计划:秒杀功能、优惠券、对接支付宝

    新项目是 newbee-mall 的升级版本,暂时就叫它 newbee-mall-plus 吧,第一阶段会开发秒杀功能.优惠券.对接支付宝这些功能,也会慢慢加入 Redis. Elastic Sear ...

  4. JMeter——分布式压测

    一.Jmeter4.0分布式压测准备工作 压测注意事项            the firewalls on the systems are turned off or correct ports ...

  5. Docker+JMeter+InfluxDB+Grafana从容器内部发起压测

    1.自由定制JMeter镜像: Dockerfile文件: FROM java:8# 基础镜像 MAINTAINER yangjianliang <526861348@qq.com># 作 ...

  6. JMeter4.0分布式调度压测部署

    我们在Loadrunner学过使用Load Generator做肉鸡, 通过Controller来进行脚本和权重的分配来进行分布式压测, Jmeter作为当今的网红性能测试工具,这个功能必须是少不了的 ...

  7. Jenkins持续集成接口压测

    步骤 自动化压测- jmeter + shell Jenkins与jmeter压测,环境要求 自动压测运行逻辑 Jmeter输出压力测试报告 压测报告与Jenkins集成 Jenkins任务:源码同步 ...

  8. Jmeter压测基础(二)——Badboy功能、Jmeter参数化、检查点、集合点、动态关联、图形监控

    Badboy 以下稍微介绍一下badboy的部分功能: 1.Record;play(badboy打开后默认是recording状态) 2.Assertion(检查点/断言) 3.Variable: t ...

  9. Java秒杀实战 (四)JMeter压测

    转自:https://blog.csdn.net/qq_41305266/article/details/81071278. 一.JMeter入门 下载链接 http://jmeter.apache. ...

随机推荐

  1. 非Java程序员转行Java-day01-入门基础

    1.学习大纲介绍 课件中的代码及资料:提取码:yexw 学习中的依赖包及安装文件:提取码 :8par 2.数据流向分析 2.1.应用型软件开发本质 增删改查(非常重要,5星) 2.2.大型网站演变历史 ...

  2. Mysql 整数类型的字段的属性设置及常用的函数

    数据类型 二.MySQL支持的数据类型 数值类型.日期类型.字符串类型 1.数值类型 1)整数类型 tinyint.smallint.mediumint.int和bigint 2)zerofill属性 ...

  3. selenium 定位元素方法

    1.通过id定位元素 写法1: element = driver.find_element_by_id("kw") 写法2: from selenium.webdriver.com ...

  4. Flask--登录验证(多个装饰器)

    登录验证(多个装饰器) from flask import Flask,url_for,session,render_template import functools app = Flask(__n ...

  5. CentOS8-在hyper-V安装选项

    安装选项select Server with a GUI.后重启卡在黑屏无法启动. 后改选: Select software to be installed.  Choose the Workstat ...

  6. Linux命令——basename、dirname

    简介 这2个命令多用于shell脚本 用法 basename filename_will_full_path dirname filename_will_full_path 对于但后缀的情况,base ...

  7. VLAN实验4:利用单臂路由实现VLAN间路由

    单臂路由: 实验环境: 实验拓扑图: 实验编址: 实验步骤:1.创建VLAN并配置Access.Trunk接口. 我们在S2上创建VLAN10和VLAN20,并且吧链接PC1的E0/0/1和链接PC2 ...

  8. MySQL/MariaDB数据库的视图(VIEW)

     MySQL/MariaDB数据库的视图(VIEW) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.视图概述 1>.什么是视图 视图就是一个虚拟的表,保存有实表的查询结果 ...

  9. Linux之RHEL7root密码破解(二)

    破解Linux root密码的第二种方法,如下: 首先开机,进入启动界面,接着找到如下图所示的代码字段,将ro改成rw init=/sysroot/bin/sh ,如下图: 之后按“Ctrl+X”之后 ...

  10. Codeforces C. Elections(贪心枚举三分)

    题目描述: C. Elections time limit per test 2 seconds memory limit per test 256 megabytes input standard ...