性能测试工具Jmeter负载模拟

news/2025/1/15 3:48:25/

目录

场景设置

线性属性

补充知识:java线程一般有以下5种状态

场景运行

1.GUI运行测试

2.非GUI运行测试


在Jmeter测试计划中可以实现场景,负载,监听的功能。场景是用来尽量模拟用户的真实操作的工作单元,Jmeter场景主要通过线程组设置完成。场景设计源自于用户的真实操作,场景设计的原则是忠于用户的真实操作,将用户的各种操作组合到场景中来。

当然,Jmeter场景设计不仅仅是设置线程组,有些复杂场景的设计还需要配合逻辑控制器。

场景设置

Jmeter线程组实际上是建立一个线程池,Jmeter根据用户的设置初始化线程池,并在运行时处理各种逻辑。

图片

名称:可以随意设置,但最好有业务意义。

注释:可以随意设置,也可以为空

在取样器错误后要执行的动作:既某一个请求出错后的异常处理方式,分为以下5中方式运行。

1>继续

如果请求(用Sampler元件模拟的用户请求)出现错误,其后的请求将继续运行。

在大量用户并发时,服务器偶尔响应错误是正常现象。例如服务器由于性能问题不能正常响应或者响应慢,此时出现的错误需要被记录,作为服务器存在性能问题的依据。

2>启动下一进程循环。如果请求出现错误,则同一脚本中的余下请求将不再执行,直接执行下一进程。

3>停止线程。如果请求失败,则停止当前线程,不再继续执行。假如配置了运行50个线程,如果某一线程中的某一个请求失败了,则停止当前线程。如果停止的事务增多,则停下来线程也会增多,处于运行状态的线程会减少,最后导致服务器负载不够(若服务器负载不够,测试结果将不具有参考性),因此一般不会勾选此项。

4>停止测试。如果请求失败,则停止所有线程,即停下整个测试。但是每个线程会执行完当前迭代后再停止。

5>立即停止测试。如果请求失败,立即停止整个测试场景的运行。

线性属性

1>线程数。运行的线程数设置,一个线程对应一个模拟用户。

2>Ramp-up时间(秒)。所有线程从启动到开始运行的时间间隔,单位是秒。即所有线程在多长时间内开始运行。

如果线程数设置了30个,Ramp-up时间设置了10秒,那么开启场景后每秒会启动(30/10)3个线程。

如果Ramp-up设置了0秒,那么开启场景后将全部运行30个线程。

3>循环次数。请求的重复次数。如果选择后面的“永远”,那么请求将一直继续除非停止或崩溃;如果不选择“永远”,而在输入框中输入数字,那么请求将重复指定的次数;如果输入1,那么请求将执行一次;执行0次无意义,所以不支持设置为0。

4>Same user on each iteration。复用前一次迭代的线程。

5>延迟创建线程知道需要。线程在Ramp-up Period的间隔时间内启动并运行。例如设置了30个线程10秒内的Ramp-up Period时间,那么每隔1秒启动3个线程并运行测试。

图片

6>调度器。设置何时开始

7>持续时间(秒)。测试计划持续多长时间。

8>启动延迟(秒)。从当前延迟多长时间开始运行测试,单机执行按钮后,仅初始化场景,不运行测试,等待延迟到达后开始测试,运行时长为“持续时间”中设置的时间长度。

如果你觉得这个场景无法满足负载递增的需求,不能设计出浪涌的场景,那么可以使用第三方插件(jmeter-plugins官网下载)来满足要求。

补充知识:java线程一般有以下5种状态

NEW。创建未启动,已经实例化。

RUNNABLE。就绪状态,线程对象创建后,其他线程调用了该对象的start()方法,该状态的线程位于可运行线程池中,已经准备好。只等获取CPU的使用权,然后开始运行。

RUNNING。运行状态,就绪状态的线程获取了CPU使用权,执行程序代码。

BLOCKED。阻塞状态,线程因为某种原因放弃CPU使用权,暂时停止运行(典的如IO等待导致的线程处于BLOCKED状态):直到线程进入就绪状态,才有机会转到运行状态:阻塞的情况分为以下3种。

等特阻塞。运行的线程执行 wz0方法,线程进入等待池中。

同步阻塞。运行的线程在获取对象的同步锁时,由于该同步锁被别的线程占用(思就是资源争用落败),该线程被放入锁池中。

其他阻塞。运行的线程执行 sleep()或join()方法,或者发出了IO请求时,该线程设置为组赛状态。当sleep()状态超时时、join()等待线程终止或者超时,或者IO处理完毕时线程重新转入就绪状态。

DEAD。死亡状态。执行完毕或者异常退出,线程生命周期结束。

场景运行

Jmeter通过场景运行来制造负载。Jmeter的场景运行方式分为两种,一种是GUI方式,另一种是非GUI方式。在windows系统中我们可以使用命令窗口的中运行。

Jmeter运行基于两种架构,一种是本地化运行,即单机运行;另外一种是远程运行。不管是GUI或者是非GUI方式,都支持本地化和远程运行。

1.GUI运行测试

由于具有可视化,用GUI方式查看测试结果比较直观,用鼠标单击就可以控制启动,也方便我们实时查看运行状态,查看测试结果,运行线程等。

2.非GUI运行测试

非GUI运行测试是没有Jmeter界面,我们在命令窗口通过命令行来实现场景运行,之所以使用非GUI方式运行是因为Jmeter可视化界面及监听动态展示结果比较消耗负载机资源,再多并发情况下GUI方式往往会导致负载及资源紧张,会对性能测试结果造成影响。

当然,这个影响不是说被测系统的性能受到影响。比如,响应时间变大之类,而是影响了负载量的生成。非GUI方式下100个线程可以产生100TPS的负载,而GUI方式下可能会产生80TPS的负载数。

如果一台负载机器只能支持100个线程运行,那么我们只能有多增加机器外,在测试执行时提醒大家关注负载机性能,可以多架设几台jmeter负载机器来减轻单台负载机器的资源消耗。

非GUI运行Jmeter测试计划命令行:

java -jar %JMETER_HOME%\bin\ApacheJMeter.jar -n -t %JMETER_HOME%'scriptJforum-5.1-01.jmx -r -l result.jtl
%JMETER_HОME%\bin\jmeter -n -t %JMETER_HOME%\script\ Jforum-5.1-01.jmx -1%JMETER_HOME%\result\results.jtl

这两种方式都可以运行测试计划,JMeter运行测试计划实际上是通过运行ApacheJMeter.jar 来完成的。

阅读后若有收获,不吝关注,分享,在看等操作!!!


http://www.ppmy.cn/news/1563214.html

相关文章

2、docker网络和资源控制

docker网络 docker网络的类型 桥接模式:这是docker默认的网络模式,桥接模式工作在第二层,也就是数据链路层。 1、安装完成docker时,docker会自动创建一个虚拟的网络桥,类似于交换机。 2、分配唯一的ip地址&#xf…

mysql窗口函数rank() over、dense_rank() over、row_number() over 实现分组排行

在做导出时,遇到一个根据价格最低数统计,所以用到了序号排行,数据库用的8.0.33; 正好mysql 8.0以上版本支持窗口函数 总结一下几种函数: 1、row_number() row_number()over(partition by字段1 order by 字段2) 的结…

MyBatis 性能优化

1. 引言 1.1 什么是 MyBatis? MyBatis 是一款流行的 Java 持久层框架,能够将 Java 对象与 SQL 数据库映射起来。与传统的 JDBC 不同,MyBatis 提供了灵活的 SQL 映射功能,使开发者可以专注于业务逻辑,而无需编写冗长的…

21天学通C++第八章——指针

C虽然可以动态的管理内存,但是并不能像其他高级语言如JAVA、C#有自动垃圾收集器去对应用程序的内存进行清理。 常见指针错误 内存泄漏 解释: 在使用完new申请内存之后,没有配套的delete,则之后会产生内存泄漏。 即如何理解&a…

苹果电脑怎么清理后台,提升苹果电脑运行速度

苹果电脑以其流畅的系统和高效的性能备受用户青睐,但即使是性能强大的Mac,随着使用时间的增长,也会遇到运行变慢、卡顿的问题。造成这种现象的一个主要原因是后台运行的程序和进程过多,占用了系统资源。那么,苹果电脑怎…

【C语言】标准IO

目录 1. 什么是标准IO 1.1概念 1.2特点 1.3 操作 2. 缓存区 3. 函数接口 3.1打开文件fopen 3.2关闭文件 3.3读写文件操作 3.3.1每次读写一个字符:fgetc()、fputc() a. 针对文件 b. 针对终端 3.3.2 每次一串字符的读写fgets()和fputs() c. 针对终端 d…

Spring Cloud Alibaba - Nacos理论面试总结-未完结

临时实例和永久实例 临时实例和永久实例在 Nacos 中是一个非常非常重要的概念 之所以说它重要,主要是因为我在读源码的时候发现,临时实例和永久实例在底层的许多实现机制是完全不同的 临时实例 临时实例在注册到注册中心之后仅仅只保存在服务端内部一…

【数学】概率论与数理统计(五)

文章目录 [toc] 二维随机向量及其分布随机向量离散型随机向量的概率分布律性质示例问题解答 连续型随机向量的概率密度函数随机向量的分布函数性质连续型随机向量均匀分布 边缘分布边缘概率分布律边缘概率密度函数二维正态分布示例问题解答 边缘分布函数 二维随机向量及其分布 …