Jmeter场景设置与监听

Jmeter场景设置
场景的概念:
场景是用来尽量真实模拟用户操作的工作单元,场景设计源自于用户真实操作。

场景设计:
场景设计是根据收集分析用户的实际操作而定义的Jmeter脚本的执行策略。
性能测试中涉及的基本场景有两种,即单一业务场景和混合业务场景,这两种业务场景缺一不可, 缺少任何一种都不能准确评估系统性能,定位系统瓶颈。如果只做单-业务场景,得到的结果与实际生产环境差距较大,没有实际指导意义;如果只做混合业务场景,不能快速定位系统性能快速降低的原因,起不到定位瓶颈、系统调优的作用。只有两种场景互为补充,才可以获取最符合客户要求的测试结果。

在Jmeter场景主要通过线程组设置来完成。通过组合用户各种操作到场景中来,当然场景设计不仅仅是设置线程组,有些复杂场景还需要与逻辑控制器配合。Jmeter线程组实际上是建立一个线程池。

线程组界面如下:

线程组界面参数说明:
名称、注释与之前元件一样可以随意设置。

在取样器错误后要执行的动作:设置线程组中某一个请求出错后的异常处理方式。
继续:请求出错后继续运行。勾选此项后,有请求出错也继续运行。在大量用户并发情况下,服务器偶尔响应错误是正常现象,比如服务器由于性能问题不能正常响应或者响应不及时,此时我们把过程中错误记录下来,作为有性能问题的依据。

Start Next Thread Loop:遇到sampler执行出错时,直接进行下次循环,当前循环剩下的所有sampler不再执行。
停止线程:遇到sampler执行出错时,当前线程停止进行,其他线程继续。
停止测试:遇到sampler执行出错时,当前所有线程执行完当前循环停止进行。
stop Test now:遇到sampler执行出错时,当前所有线程立即停止

线程属性:
线程数:设置并发用户线程数量,即通常意义的并发用户数,一个线程对应一个模拟用户。

Ramp-Up Period (in seconds) :设置并发用户加载时间,即线程启动开始运行的时间间隔,单位是秒。假设并发用户数设置为50,此处设置为10,那么每秒就会启动50/10,5个线程;如果设置0,则开始就50个线程就立即启动。

循环次数:输入框与复选框只能选择一种, 不能同时被选择为场景循环方式;输入框输入数字则被认为是当前线程组所控制的脚本区域的执行次数; [永远] 复选框选后,输入框内的数字将失效,启动后脚本将一直执行下去。 输入框输入0表示执行0次无意义,所以不支持。

Delay Thread creation util needed:直到需要时延迟线程的创建,设置后,线程在Ramp-Up Period的间隔时间启动并运行。不设置,测试计划开始后启动所有线程
(NEW状态),但不立即运行Sampler,是按照Ramp-Up Period时间来运行的。
在实际性能测试过程中,设置或者不设置都影响不大。

调度器:选中之后可以配置启动时间,立即或者预定的时间。
启动时间:测试计划什么时候启动,启动延迟会覆盖它。当启动时间已过,手动运行脚本时当前时间也会覆盖它(但启动时间页面显示不会变)。
结束时间:测试计划什么时候结束,持续时间会覆盖它。
持续时间(秒) :测试计划持续多长时间,会覆盖结束时间。
启动延迟(秒) :测试计划延迟多长时间启动,会覆盖启动时间。

场景运行
Jmeter的场景运行方式分为两种,一种是GUI界面方式运行,一种是命令窗口(Windows的DOS命令窗口)运行。
Jmeter的场景运行架构分为两种,一种是本地运行,另一种是远程运行。不管是GUI还是命令方式都支持本地和远程运行。

GUI方式运行:
1、本地运行:本地运行即只运行本地一台]meter机器, 所有的请求通过该机器发
送。
2、本地运行点击绿色的运行按钮,如下左图所示

 

3、点击运行后,通过右上角可以查看线程信息,0代表没有线程异常,0/4中的前一个0代表当前运行活跃的进程数为0,后一一个4代表了总共运行了4个线程。灰色的圆框如果是绿色的代表运行正确。如果要停止测试,点击STOP按钮

2、远程运行:
远程运行是用-台Jmeter控制机控制远程的多台机器来产生负载。控制机与负载机之间通过RMI方式来完成通信。
操作步骤如下:
1、在负载机上部署Jmeter,确保Jmeter的bin目 录下存在ApacheJMeter.jar与jmeter-server.bat两个文件。
2、双击启动负载机的jmeter- server.bat程序。
3、在Jmeter控制机的bin目 录下找到jmeter.properties文件并修改"remote.hosts",
增加负载机IP,多个IP使用英文逗号隔开,修改后要重启Jmeter。如下图:

4、进入Jmeter控制机的GUI图形界面,远程运行点击上图按钮即可。点击后,Jmeter控制机会自动探测,只要先启动远程负载机上的Agent,开始运行测试计划时就会自己连接负载机去完成。
5、如果要停止,点击上面右图的后面两个按钮即可。前者是执行完成当前迭代停止(比如脚本中有5个请求,在运行第2个的时候收到停止命令,那么将继续执行完5个请求然后再停止), 后者是立即终止。
备注:设置127.0.0.1, 需要控制机也启动jmeter-server.bat

命令窗口运行:
命令窗口运行没有Jmeter界面,通过DOS命令窗口运行场景。用纯命令方式运行Jmeter是因为]meter可视化界面及监听器动态展示结果都比较消耗负载机资源,在大并发情况下GUI方式往往会导致负载机资源紧张,会对性能结果产生影响。
这个影响不是指被测系统的性能受到影响,而是指负载机的性能受到影响,导致负载量上不去,比如命令模式100个线程可产生100TPS的负载,而GUI方式只产生80TPS的负载。所以推荐进行性能测试的时候,使用命令方式来运行测试计划。

Jmeter命令窗口方式运行场景的命令如下:
1、java -jar %JMETER_ HOME%\bin\ApacheJMeter.jar -n -t
%JMETER_ HOME%\script\script.jmx -r -l result.jtl
2、%JMETER_ HOME%\bin\jmeter -n -t %JMETER HOME%\script\script.jmx -r -l result,jtl
备注:
两条命令都可以运行测试计划,其中%JMETER_HOME%必须配置jmeter的环境变量,%JMETER_HOME%\script\scriptjmx为jmeter脚本存放路径。

jmeter命令行工具部分参数说明:
-n:非GUI方式运行
-t:指定运行的测试脚本地址与名称,可以是相对或绝对路径
-h:查看帮助
-v:查看版本
-p:指定读取Jmeter属性文件,比如jmeter.properties文件中设置的
-1:记录测试结果到文件,指定名称与路径,可以是相对或绝对路径
-s:以服务器方式运行(远程方式)
-r:开启远程负载机,远程负载机列表在jmeter.properties文件中指定
-R:开启远程负载机,可以指定负载机IP,会覆盖jmeter.properties中的设置
-L:定义Jmeter的日志级别,如DEBUG、INFO、ERROR等
-H:设置代理IP
-P:设置代理端口
-u:设置代理帐号
-a:设置代理帐号密码
-X:停止远程执行
-J:定义Jmeter属性, 等同于在jmeter.properties中设置
-G:定义Jmeter全局属性,等同于在Global.properties中设置,线程间可相互共享

Jmeter场景运行优化配置:
在性能测试场景运行时,使用GUI方式会占用资源,其实不管是GUI或者命名模式都会占用一定资源。因为Jmeter是纯Java开发,所以可以调整其性能参数,让其在Java虚拟机上运行起来更顺畅、效率更高。

配置如下:
打开Jmeter安装路径\bin\下的jmeter.bat文件,打开后,其中rem属于注释。
可以修改如下参数:
set HEAP:设置JVM堆大小,-Xms设置 初始堆大小,-Xmx设置最大堆大小
set NEW:设置年青代大小,-XX:NewSize设置年 青代初始内存大小,-
XX:MaxNewSize设置年青代最大内存大小,建议设为整个堆大小的1/3或者1/4,两
个值设为一样大。
set PERM: -XX:PermSize设置 持久代初始大小,-XX:MaxPermSize: 最大大小
set TENURING:年青代晋升年老代周期,默认是15
整个堆大小=年轻代大小+年老代大小+持久代大小,持久代-般固定大小为64m,所以增大年轻代后,将会减小年老代大小。

Jmeter测试监控
性能测试执行过程中,场景监控的主要任务是收集测试结果,测试结果有事务响应时间、吞吐量、TPS、 服务器硬件性能、JVM使用情况和数据库性能状态等。Jmeter中通过 监听器来完成测试结果收集工作。
Jmeter监听器元件比较多,- -般做性能测试用到比较多的监听器主要是Summary Report或者Aggregate Report(聚合报告)。
Summary Report以表格的形式显示取样器结果,如果不同取样器(不同请求)拥有相同的名字,那么在Summary Report中会统计到同一行,所以在给取样器取别名时最好不要为空,按业务功能来命名较好。
在执行性能测试之前,先通过右击线程组--添加--监听器- Summary Report,执行后生成的结果图如下:

Summary Report界面说明:
名称、注释与之前元件-样可以随意设置。
所有数据写入一个文件:保存测试结果到本地。
文件名:指定保存结果。
仅日志错误:仅保存日志中报错的部分。
Successes:保存日志中成功的部分。
Configure:设置结果属性,即保存哪些结果字段到文件。-般保存必要的字段
信息即可,保存的越多,对负载机的I0会产生影响。
Label:取样器名称(或者是事务名)。

Samples:取样器运行次数(提交了多少笔业务)。
Average:请求(事务)的平均响应时间,单位为毫秒。
Min:请求的最小响应时间,单位为毫秒。
Max:请求的最大响应时间,单位为毫秒。
Std.Dev:响应时间的标准方差。
Error%:事务错误率。
Throughput:吞吐率(TPS)。
KB/sec:每秒数据包流量,单位是KB。
Avg.Bytes:平均数据流量,单位是Byte。

Aggregate Report(聚合报告)与Summary Report-样,也是以表格显示取样器结果。在执行性能测试之前,先通过右击线程组-添加--监听器-聚合报告,执行后生成的结果图如下:

聚合报告中大部分字段与Summary Report-致,不再重复介绍,其它说明如下:
Median:响应时间中间值,指50%请求的响应时间。
90%Line: 90%请求的响应时间
95%Line: 95%请求的响应时间
99%Line: 99%请求的响应时间

标准方差的理解:
1.数据分布离平均值越近,标准方差越小;数据分布离平均值越远,标准
方差越大。
2.标准方差为0,意味着数列中每-个数都相等。
3.序列中每一个数都加上一个常数,标准方差保持不变的
所以,在查看测试报告时,标准方差越小,表示系统越趋于稳定。

90%Line的理解:
表示90%请求的响应时间,服务器的响应都维持在某个值附近。‘Average"值对于平均事务响应时间变动趋势很大的情况统计就不准确了,比如有三个时间: 1秒、5秒、12秒,则平均时间为6秒,
而另外一种情况:5秒、6秒、7秒,平均时间也为6秒,显然第二种比第一种要稳定多 了。所以,如果整体趋势比较稳定,取90%Line与Average区别不大。

Jmeter监控服务器资源:
商业性能测试工具如LR都提供了对被测服务器进行性能监控的功能,在使用Jmeter执行性能测试时,为了尽量减少负载机的资源消耗,一般不建议使用服务器资源监控的功能。而可以使用第三方工具去监控收集服务器资源。
但一些普通的场景(负 载小)还是可以利用]meter来进行服务器资源监控的。在Jmeter中通过第三方开源组件来完成此功能。

Jmeter监控服务器资源配置如下:
1、进入https:/ /jmeter-plugins.org/ downloads/all/下载jmeter-plugins-manager-0.11.jar,放置到jmeter安装 目录/lib/ext,然后重启jmeter
2、重启后从菜单-选项--Plugins Manager,进入插件管理界面,下 载PerfMon插件,重启Jmeter
3、进入https://jmeter-plugins.org/wiki/PerfMonAgent/ 下载ServerAgent-2.2.1.zip,把该压缩包在被测服务器上解压,解压后在dos命令窗口运行startAgent.sh命令,默认使用4444端口
4、在Jmeter工具端输入telnet服务器ip 4444然后输入test ,查看被测服务器是否有收到相应信息,收到表示连接正常,如果连接异常检查防火墙等原因。
5、在Jmeter控制机添加一个PerfMon Metrics Collector监听器, 点击运行即可获取。

命令窗口模式下性能测试结果收集:

聚合报告:在用命令模式执行时保存了后缀为,jtl格式的结果文件。打开JMeter
GUI界面->测试计划->添加线程组->添加聚合报告->点击"所有数据写入-个文
件"下的"浏览.."按钮找到你刚生成的jtl文件就可以对执行结果进行直观分析。

服务器资源:在GUI中为服务器性能监控监听器配置好要输出到的结果文件即可,
就像为其他监听器所配置的那样。压力脚本运行结束之后,就可以把保存的文件
拖到GUI并查看图形数据了。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/239732.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

js 有关递归简单介绍

递归:指调用自身的函数 重点:递归函数必须有可以终止递归调用的语句,否则会导致内存溢出 递归的性能不好,因为在递归终止前,JavaScript引擎会为每一次递归分配一块内存以存储栈帧,随着递归的深入&#xff…

掌握 Python sympy 库的高级计算技巧

更多资料获取 📚 个人网站:ipengtao.com Sympy是Python中一个强大的符号计算库,为数学和科学计算提供了丰富的功能。本文将深入介绍Sympy库的各项功能,并提供丰富的示例代码,以帮助大家更好地理解和应用这一工具。 S…

网络基础(七):传输层协议介绍

目录 一、TCP协议(传输控制协议) 1、TCP协议介绍 2、TCP协议特性 3、TCP报文格式 4、TCP的三次握手 4.1TCP三次握手的概念 4.2TCP三次握手流程图 4.3 TCP三次握手阐释说明 5、TCP的四次挥手 5.1TCP四次挥手的概念 5.2TCP四次挥手的流程图 5.…

阿里云服务器ECS安全组开启端口教程

阿里云服务器安全组开启端口教程 云服务器 ECS(Elastic Compute Service) 云服务器 ECS(Elastic Compute Service)是一种安全可靠、弹性可伸缩的云计算服务,助您降低 IT 成本,提升运维效率,使您…

【OPENGIS】Geoserver升级Jetty,不修改java版本

昨天搞了一个geoserver升级9.4.53版本的方法,但是需要修改java的版本,因为jetty官方网站下载的jar包是用jdk11编译的,如果不升级java版本,运行就会报错。 可是现场环境限制比较多,升级了java版本之后有些老版本的程序又…

0基础学习VR全景平台篇第126篇:嵌入视频前期拍摄要点及后期处理

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 一、前期拍摄要点 嵌入视频的简介和用途 livepano即完全无缝融合到全景图中的热点嵌入视频。 这种无缝融合是真正无缝,从而让观者产生沉浸感和真实感。例如在场景中…

第 6 部分 — 对 LLM 的对抗性攻击。数学和战略分析

第 6 部分 — 对 LLM 的对抗性攻击。数学和战略分析 一、说明 针对大型语言模型(LLM)的对抗性攻击代表了人工智能安全中一个复杂的关注领域,需要数学严谨性和战略远见的复杂结合。这些攻击旨在操纵 LLM 产生意想不到的输出,范围从…

Android studio:打开应用程序闪退的问题2.0

目录 找到问题分析问题解决办法 找到问题 老生常谈,可能这东西真的很常见吧,在之前那篇文章中 linkhttp://t.csdnimg.cn/UJQNb 已经谈到了关于打开Androidstuidio开发的软件后明明没有报错却无法运行(具体表现为应用程序闪退的问题&#xff…

学习深度强化学习---第2部分----RL动态规划相关算法

文章目录 2.1节 动态规划简介2.2节 值函数与贝尔曼方程2.3节 策略评估2.4节 策略改进2.5节 最优值函数与最优策略2.6节 值迭代与策略迭代2.7节 动态规划求解最优策略 本部分视频所在地址:深度强化学习的理论与实践 2.1节 动态规划简介 态规划有两种思路&#xff1…

Linux(20):软件安装:原始码与 Tarball

开放源码的软件安装与升级 在Windows系统上面的软件都是一模一样的,【无法修改该软件的源代码】,因此,万一想要增加或者减少该软件的某些功能时,无能为力。。。 Linux 上面的软件几乎都是经过 GPL 的授权,所以每个软件…

Conda使用教程

文档 老规矩,先上官方文档链接 Anaconda Distribution — Anaconda documentation 是什么 anaconda是python环境管理工具。当需要用到多个python版本时,使用anaconda可以方便快速地进行环境切换,依赖包的安装。底层原理是修改环境变量。 …

C++核心编程——多态与虚函数

C核心编程——多态与虚函数 多态的概念一个典型例子利用虚函数实现动态多态性虚函数的作用虚析构函数 纯虚函数与抽象类 多态的概念 在面向对象方法中一般是这样表述多态性的:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。…

渲染农场对工业产品渲染带来的意义与优势?

随着科技的进步,利用精细渲染图来呈现和推广工业设计的创新已成为行业标准。这些图像在产品研发、设计评审和营销阶段起着关键作用,同时对产品最终的成功也产生深远影响。然而,由于产品设计日渐复杂,制作渲染图的任务变得极具挑战…

VisualSVN Server的安装全过程

目录 背景: 安装过程: 步骤1: 步骤2: 步骤3: 步骤4: 步骤5: 安装出现的bug: 问题: 解决办法: 总结: 背景: VisualSVN Server 是一款免费的 SVN (Subversion) 服务器软件&#xff0c…

30、Linux安全配置

文章目录 一、Linux安全配置简介二、Linux安全配置2.1 网络配置2.2 防火墙配置2.2.1 确定防火墙区域配置 2.3 日志和审核2.4 访问、认证和授权2.4.1 SSH配置2.4.2 PAM模块配置 一、Linux安全配置简介 Linux种类较多,常用的有Redhat、Ubantu、Centos等。这里以Cento…

数据结构第六课 -----排序

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

Java开发环境详解(安装,工作流程,程序结构与终端运行)

参考书籍: 《明解Java》 《Java轻松学》 《Head First Java》 《Java核心技术卷I》 《Java核心技术卷II》 参考视频: Java零基础学习视频通俗易懂 Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程 参考网站: Kuan…

DNSLog漏洞探测(一)之DNSLog介绍

前言 DNSLog是一种基于DNS协议的信息收集技术,它可以用于网络安全领域的渗透测试、漏洞挖掘等方面。DNSLog的原理是利用DNS协议的特性,将需要收集的信息编码成DNS查询请求,然后将请求发送到DNS服务器,最后通过DNS服务器的响应来获取信息。DNSLog的实现方式有很多种,其中最常见…

.Net中的集合

所有的集合都是继承自IEnumerable。集合总体可以分为以下几类:关联/非关联型集合,顺序/随机访问集合,顺序/无序集合,泛型/非泛型集合,线程集合。 各集合类底层接口关系图 泛型与非泛型集合类的分析 泛型集合是类型安…

智能优化算法应用:基于入侵杂草算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于入侵杂草算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于入侵杂草算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.入侵杂草算法4.实验参数设定5.算法结果6.…