性能测试工具Jmeter负载模拟

devtools/2025/1/15 23:50:55/

目录

场景设置

线性属性

补充知识: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/devtools/150391.html

相关文章

Filebeat es

es kibana 内网地址 127.0.0.1:9200 https://vpcep-7c16b185-4d03-475c-bf9b-c38cde8d02c0.test.huaweicloud.com:9200 账户 admin 密码 admin #端口 9200 eskibana https://127.0.0.1:5601/app/login?nextUrl%2F 账户 admin 密码 admin docker 构建容器启动 docker syste…

自动化机械臂视觉跟踪和手眼校准

本文重点介绍了一款专为机器人教育而设计的具有动态跟踪功能的创客友好型机械臂 硬件组件 M5Stack ESP32 Basic Core IoT Development Kit Raspberry Pi 4 Model B Espressif ESP32S Elephant Robotics myCobot 320 m5 引言 今天文章的重点是使用myCobot 320机械臂重新创…

【samba】主机名访问ubuntu的samba文件夹

197机器是双系统的。之前在ubuntu(k8s-master-pfsrv)上创建了perfwork的samba共享文件夹现在同一个ip地址197 的windows系统也有共享文件夹。这些我从65的win机器访问 ubuntu系统共享文件夹,ubuntu 都不管用了。难道是win的配置后,之前的ubuntu的就重复了?之前直接用ip地址…

Qwen2ForSequenceClassification文本分类实战和经验分享

本文主要使用Qwen2ForSequenceClassification实现文本分类任务。 文章首发于我的知乎:https://zhuanlan.zhihu.com/p/17468021019 一、实验结果和结论 这几个月,在大模型分类场景做了很多实验,攒了一点小小经验。 1、短文本 1)query情感分类&…

Perl语言的软件开发工具

Perl语言的软件开发工具概述 引言 在软件开发的世界里,选择合适的编程语言和开发工具是成功的关键之一。Perl语言,作为一种功能强大的脚本语言,在数据处理、文本分析、系统管理和Web开发等多个领域中发挥着重要作用。在众多程序设计语言中&…

在 Ubuntu 下通过 Docker 部署 MySQL 服务器

简介 Docker 是一个开源的容器化平台,让开发者能够轻松打包、分发和运行应用程序。它通过容器隔离应用和依赖,确保一致的运行环境。而 MySQL 是一个广泛使用的关系型数据库管理系统,以其高性能和可靠性而著称。结合 Docker 和 MySQL&#xf…

跨境电商领域云手机之选:亚矩阵云手机的卓越优势

在跨境电商蓬勃发展的当下,云手机已成为众多企业拓展海外市场的得力助手。亚矩阵云手机凭借其独特优势,在竞争激烈的云手机市场中崭露头角。不过,鉴于市场上云手机服务供应商繁多,企业在抉择时需对诸多要素予以审慎考量。 跨境电商…

顶层const与底层const

当一个常量引用绑定到与其本身不同的数据类型时,会生成一个临时量。 例如,有一个const int&(常量引用指向整数),如果用一个double类型的值去初始化它,编译器会创建一个临时的int变量,这个临…