JMeter——模拟多用户同时发送请求(三)

这篇具有很好参考价值的文章主要介绍了JMeter——模拟多用户同时发送请求(三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第四章 JMeter模拟多用户同时发送请求

1、一个简单的压力测试实战

现有一个http请求接口http://localhost:8080/goods/to_list, 要使用Jmeter对其进行压测,测试步骤如下:

a.新建一个线程组。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

b. 设置线程组参数。这里配置为:10个线程,同时启动,循环一次。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

c. 新增http请求默认值。 在上一步创建的线程组上,新增http请求默认值,所有的请求都会使用设置的默认值,这设置协议为http,IP为localhost,端口为8080。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

d. 添加要压测的http请求。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器
下图第一个红框内的协议、IP、端口不需要设置,会使用步骤c中设置的默认值,只需设置请求路径Path即可,这里填入/goods/to_list

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

e. 新增监听器,用于查看压测结果。这里添加三种:聚合报告、图形结果、用表格查看结果,区别在于结果展现形式不同。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

f. 点击运行按钮开始压测,并查看结果。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

五、如何查看系统负载何性能瓶颈
服务器上执行以下命令:

top

如下图所示,可以看到系统负载load average情况,1分钟平均负载,5分钟平均负载,15分钟平均负载分别是1.58, 0.50, 0.23;同时可以看到最耗费资源的进程为mysql

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

2、如何创建带参数的请求

1. 首先新建一个http请求。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器
2.设置请求路径,并添加参数。  如下图所示,Path中填写请求路径,点击Add添加参数,有一个名为token的参数。
jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器
至此给带参数请求已创建完成,点击运行即可开始压测。

3、如何模拟设置多个变量,模拟多个用户请求接口

  1. 新建Csv Data Set Config设置。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器
2.新建配置文件config.txt,配置用户信息。 文件名随便写,里面数据每行有两个值,userId和userToken,中间用逗号隔开,我这里设置了两个用户的信息。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器
3.引用配置文件。 Csv Data Set Config中引用配置文件config.txt,并定义变量名为userId和userToken。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器
4.请求中引用配置文件中的变量。 在填写参数Value的地方不要将值写死,而是写为 变量名这种格式,我这里想要引用配置文件中 u s e r T o k e n 的值,所以写为 {变量名}这种格式,我这里想要引用配置文件中userToken的值,所以写为 变量名这种格式,我这里想要引用配置文件中userToken的值,所以写为{userToken}。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器
至此配置完毕,点击运行按钮,即可开始压测。

4. jmeter模拟多用户并发

一. 100个真实的用户

  1. 一个账号模拟100虚拟用户同时登录和100账号同时登录
    区别
  • 1个账号100个人用,同时登录;
  • 100个人100个账号,同时登录。

相同

  • 两个都是100人同时登录,具体看项目需求。
  1. 账号来源
  • 利用“注册”或“创建”账号接口,创建100个用户;
  • “查询”接口,保存100个账号的账号、密码到一个文件。

3、提取100个账号、密码的文件

  1. meter脚本整体布局
线程组(一级)---->请求默认值、请求头、http请求、察看结果树(二级)----->正则表达式、BeanShell 后置处理程序(三级)。
  • HTTP请求默认值:是存放系统通用ip的位置(协议:http; 服务名称或ip:127.0.0.1);
  • HTTP信息头管理:接口请求之前需要带的信息,部分接口不带不能运行(Authorization、Content-Type、Accept、User-Agent),例如必须带的token就在信息头中存放;
  • 登录请求:请求方法、请求路径、消息体;正则表达式提取token
  • 创建请求:请求方法、请求路径、消息体;参数化用户名,创建多个用户;
  • 查询账号:请求方法、请求路径、消息体;正则表达式提取用户名、密码;BeanShell 后置处理程序存储返回值到文件中

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

(2)查询请求中的正则表达式和BeanShell 后置处理程序

正则表达提取----->获取想要的字段内容
(详看:https://blog.csdn.net/belief_009/article/details/123051440)

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

  • BeanShell 后置处理程序---->将提取到的字段内容存储在指定文件4.csv中
FileWriter fs=new FileWriter("D://近期//4.csv",true);
BufferedWriter out =new BufferedWriter(fs);

out.write(vars.get("username")+","+vars.get("id"));    //username、id为正则定义名称
out.write(System.getProperty("line.separator"));      //相当于"\n"自动换行

out.close();
fs.close();

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

  • 线程组线程数设置数目等于提取到的条数,执行脚本得到100个用户的账号和密码

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

二、100个用户同时登录

  1. 设置线程组
    线程数:并发用户数
    Ramp-up时间(秒):启动所有线程所需要的时长
  • 0---->代表同时并发;
  • 100---->线程数100,时间100秒。代表每隔1s启动一个线程(100/100=1)

循环次数:Loop Count

  • 默认值是1;
  • 2---->线程数100,循环次数2。代表启动200个线程;
  • 勾选“永远”,会一直执行,需要人工停止,一般配合调度器使用。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

补充:同步定时器:

  • 作用:阻塞线程,直到指定的线程数量到达后,在一起释放,可以瞬间产生很大的压力;
  • 使用同步定时器时,循环次数要勾选为永远

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器
2. 模拟多用户登录
线程组下添加----->CSV 数据文件设置
将存储用户账号、密码的文件引入,并命名变量名称,在登录时调用。

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器

  • 调用,传参${name}
  • 注释:本系统账号密码一致,所以只需要调用一列值
/api/v1/oauth/token?username=${name}&password=${name}&scope=all&grant_type=password

  1. 执行测试,查看结果
  • 100用户同时登录

jmeter多个请求同时并发,Jmeter系列—教程,jmeter,java,服务器文章来源地址https://www.toymoban.com/news/detail-546470.html

到了这里,关于JMeter——模拟多用户同时发送请求(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 并发测试工具 apache-jmeter使用发送post请求JSON数据

    目录 1 下载安装 2 汉化 3 创建高并发测试 配置线程组 创建web请求 创建监听器 结果树 汇总报告  为web请求添加token 添加Content-Type用于发送json 4 启动测试 5 查看结果 官网 Apache JMeter - Download Apache JMeter 解压运行 2   打开软件设置中文 效果 补充知识: 什么是Damp-up: Ramp-Up Perio

    2024年02月10日
    浏览(47)
  • JMeter之IP欺骗技术(模拟不同的IP地址并发请求)

    目录 前言: 第一步:在负载机上绑定IP地址 第二步:点击高级,添加伪造的IP地址 第三步:新增IP地址复制到文本

    2024年02月12日
    浏览(54)
  • Jmeter —— jmeter利用取样器中http发送请求

    使用Jmeter发送HTTP请求 取样器是用来模拟用户操作,向服务器发送请求以及接收服务器的响应数 据的一类元件,其中HTTP请求取样器是用来模拟常用的http请求的 步骤如下: 右击测试计划——添加——线程(用户)——线程组 如下图: “线程组”的意思:JMeter是由Java实现的,

    2024年02月08日
    浏览(37)
  • 并发请求测试工具篇(二) - JMeter

    JMeter 是什么 JMeter 是一个开源的 Java 应用程序,用于性能测试和负载测试。它可以模拟多种负载类型,包括静态和动态资源请求,以及各种协议,如 HTTP、HTTPS、FTP、JMS 等。JMeter 还提供了可视化的测试结果报告,以便用户可以轻松地分析测试结果。 下载并安装 JMeter 安装 JM

    2024年02月05日
    浏览(39)
  • jmeter使用之发送webSocket请求

    在工作中,我们经常需要进行接口测试,最近做了一个项目用的是websockert协议,接口测试使用jmeter进行。以下是我用jmeter发送twebSocket协议的操作步骤。 一、jmeter下载 访问jmeter官网 https://jmeter.apache.org/,点击左侧的“Download Releases”链接 下载所需版本的jmeter,我使用的是5.

    2024年04月17日
    浏览(36)
  • Jmeter并发压测-自定义不同请求参数

    目录 背景 下载Jmeter 1. 更改语言 2. 创建线程组 3. 添加变量 3. 创建Http接口 4. 创建察看结果树 5. 执行结果 虽然可以请求相同的接口做测试,但是请求参数每次都是相同的。为了模拟不同的用户,请求不同的参数,所以要自定义参数来做多线程并发压力测试。 https://jmeter.apac

    2024年02月04日
    浏览(47)
  • Jmeter —— jmeter设置HTTP信息头管理器模拟请求头

    HTTP信息头管理器 HTTP信息头管理器是在有需要模拟请求头部的时候进行设置的,添加方式 是 右击线程组 -- 配置元件 -- HTTP信息头管理器 可以通过抓包工具或者F12获取http请求的header头部信息;如下图:   复制并点击jmeter中的从剪贴板添加,就会自动添加到http信息头管理器的

    2024年02月11日
    浏览(46)
  • jmeter负载测试如何找到最大并发用户数

    在性能测试中,当我们接到项目任务时,很多时候我们是不知道待测接口能支持多少并发用户数的。此时,需要我们先做负载测试,通过逐步加压,来找到最大并发用户数。那么当我们找到一个区间,怎么找到具体的值呢? 在区间中逐步增加步长,出现以下任意现象时,即是

    2024年01月21日
    浏览(43)
  • jmeter压力测试 设置一秒发送一次请求

    场景:有时候测试场景需要设置请求频率为一秒一次(或几秒一次) 实现方法1 首先需要在线程组下设置循环次数(可以理解为请求的次数)(次数设置为请求300次)(其中线程数跟时间自行设置)  另外,在设置的http请求下添加定时器   常数吞吐量定时器  设置目标吞吐

    2024年02月12日
    浏览(39)
  • 同一个请求同一个参数,postman发送成功,jmeter失败

    当使用jmeter 请求时吗,注意请求参数中是否包含中文。 问题来由: 1.先用postman发送,成功。  2.一模一样,header一样,请求一样,但是就是一直查询不出来。 3.经过fiddler抓包,再次对比请求头,请求体,还是没有发现有什么差别。 4.猜想: 此接口其他参数传送,都没有问题

    2024年02月13日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包