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

对线程组用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. linux技能点七 shell

    shell脚本:定义,连接符,输入输出流,消息重定向,命令的退出状态,申明变量,运算符,控制语句 定义:linux下的多命令操作文件 连接符: ::用于命令的分隔符,命令会从左往右依次执行 & ...

  2. Spire.Doc 生成pdf业务运营报告

    需求:每天向全国各运营大区钉钉运营群定时发送pdf业务运营报告: 通过对各Office操作组件对比,选择Spire.Doc.它专门为开发人员进行创建,读取,写入.转换打印 word 文档文件提供便利, ...

  3. JENKINS安卓打包CI

    jenkins构建脚本: [root@localhost tomcat]# cat move.sh #!/bin/bash # author lql release_dir=/data/android ...

  4. ZMQ应用

    一.  ZeroMQ概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型.连接处理.帧.甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字.ZeroMQ是网络通信中新的一层,介于应 ...

  5. Python使用pip安装TensorFlow模块

    1.首先确保已经安装python,然后用pip来安装matplotlib模块. 2.进入到cmd窗口下,建议执行python -m pip install -U pip setuptools进行升级. ...

  6. 在Windows10系统下安装Oracle 11g数据库

    在Windows10系统下安装Oracle 11g数据库 https://blog.csdn.net/wei1992_6/article/details/60054727

  7. Laravel —— 多模块开发

    Laravel 框架比较庞大,更适用于比较大的项目. 为了整个项目文件结构清晰,不同部分分为不同模块很有必要. 一.安装扩展包 1.根据不同 Laravel 版本,选择扩展包版本. packagest ...

  8. SOA与ESB,微服务与API网关

    SOA与ESB,微服务与API网关 SOA: ESB: 微服务: API网关: 参考资料: 1.漫画微服务,http://www.sohu.com/a/221400925_100039689 2.SO ...

  9. Expectation Maximization Algorithm

    期望最大化算法EM. 简介 EM算法即期望最大化算法,由Dempster等人在1976年提出[1].这是一种迭代法,用于求解含有隐变量的最大似然估计.最大后验概率估计问题.至于什么是隐变量,在后面会详 ...

  10. Spark-源码分析03-SubmitTask

    1.Rdd rdd中 reduce.fold.aggregate.collect.count这些方法 都会调用 sparkContext.runJob ,这些方法称之为Action 触发提交Job d ...