JMeter压测笔记

84fab849715f12b5fd55ac3a9fea88ee.gif

每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadRunner了。Jmeter 是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试). 而且用Jmeter 来测试 Restful API, 非常好用。

                                       From Jmeter中文官网

本文是Jmeter操作笔记,

本文是Jmeter操作笔记,

本文是Jmeter操作笔记。

【前文从理论角度对比了lock锁(Monitor)与读写锁(ReadWriteLockSlim)的差异和使用场景,尝试用Jmeter对lock、ReadWriteLockSlim压测】

启动Jmeter

通过点击jmeter解压目录.\apache-jmeter-5.4.1\apache-jmeter-5.4.1\bin\jmeter.bat 启动jmeter,

43cd5c2402c400deabbcd4e2d716f88a.png

上图有一个默认的测试计划,没有任何内容。

线程组

线程组元件是任何测试计划的开始点,可以配置要模拟的用户数,所有的任务都是基于线程组。

右键单击(Test Plan)>Add> Threads(Users)>Thread Group, 将添加线程组。

ca4d22d3e0421f957138f5a75fce6f25.png

区域一:在采样失败后怎么处理?

  1. Continue:继续执行接下来的操作;

  2. Start Next Thread Loop:开始下一次循环;

  3. Stop Thread:停止线程,退出该线程(不再执行此线程的操作);

  4. Stop Test:等待当前执行的采样器结束后,结束整个测试;

  5. Stop Test Now:马上停止测试;

区域二:线程属性

  1. Number of Threads(users): 线程数,相当于模拟的用户数量;

  2. Ramp-up Period(in seconds): 达到指定线程需要的时间,如果线程数是10, 时间设定为1s, 就是1s内尝试加载10个线程;

未指定ramp-up period ,也就是说ramp-up period为0,JMeter 将立即建立所有线程。

  1. Loop Count:循环次数,如果选择[Forever]则一直执行下去,直到手动停止。

旁白:  在某R周期内启动了N个线程数, 进行了L次这样的周期测试。
请求次数= 线程数 * 循环次数

  1. Duration:整个压测的时长

添加采样器

此次我们主要测试 [多读少写]的场景,故我们添加http请求采样器。

在特定线程组右键>Add>Sampler>Http Request:

64eed7902e08e0c29d2c214665574768.png

基本使用方式,一点就通。

添加侦听器

通过侦听器 监听采样结果:线程组右键>Add>Listener>[****],

这里添加几个有效常见的侦听器:View Results Tree、Summary Report、Aggregate Report、Aggregate Graph

a305718e2b6fef9ad4607c60aff3736b.png

压测过程

在一个线程组内的线程是依次执行的,我们建立两个线程组分别测试

(读写比1:1)
压测时长:4分钟每秒尝试启动300线程不断循环
http://localhost:5000/rwlock?key=aa&value=ss1
http://localhost:5000/rwlock?key=aa&value=ssss1
http://localhost:5000/monitorlock?key=aa&value=ss1
http://localhost:5000/monitorlock?key=aa&value=ssss1

0b76cce9b77935cbad96fd60d5252356.png4b98c3c51d5a86a7709d435fe21f26a0.png


(读写比10:1)

5d4600047d1825bfca8f1732f7acef07.png5d26f246bae90caf212af129d5e3f717.png

Label :各个模拟测试的名称
Samples :各个测试的样本总数
Average :每个请求的平均响应时间
Median :中值,即50%请求的平均响应时间
90%Line :90%请求的响应时间
Min :最小响应时间
Max :最大的响应时间
Error% :错误响应的概率,即无法响应的概率
ThroughPut :吞吐量 – 默认情况下表示每秒完成的请求数(Request per Second)。
KB/Sec :每秒从服务器端接收到的数据量。

貌似性能基本没差异,====》 到Stack Overflow走一圈,    类似问题

https://stackoverflow.com/questions/4217398/when-is-readerwriterlockslim-better-than-a-simple-lock

There's no contention in this program. The Get and Add methods execute in a few nanoseconds. The odds that multiple threads hit those methods at the exact time are vanishingly small.

这个压测中没有争用,_dict.TryGetValue 是o(1)的复杂度,速度很块,多个线程在某时刻命中这个方法的概率极小,整个api代码块耗时几纳秒,压测结果12ms,绝大部分都是在网络上, 貌似要写代码测试了。

真是一个悲伤的故事,本文最终沦落为#JMeter操作笔记#。

筒靴们有其他意见或者想法,请留言赐教。  

源码地址 https://github.com/zaozaoniao/RWLOCKTest

 性感豹纹

ea257c5c7b936693a71a6254d726c375.gif

  多线程环境下,程序真是危机四伏

073abfbe1a33653bca335da2e35e95fe.gif

  面试官:平时开发中你用过读写锁吗?

109ab03788198c6401ac376ef18ae9d4.gif

  你管这叫"线程安全"?

9b027e32ae13ccc9e2ee796c8d9be325.gif 面试官:实现一个带值变更通知能力的Dictionary

9304f40061f008b48fb3610e609b1851.gif

  如何主动清空.NET数据库连接池?

d6883b68697dffffadb5fa042b1cfee3.gif

  .Net线程同步技术解读

“赞”552beb0462be581d390b5436cf3f54e0.gif“在看”8c145349729ad451448a3f343d72739c.gif

体现态度很有必要!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统同传软件_如何戴耳机录制自己的同传练习?

在学校上课的话,有同传实验室的模拟会议系统可以完成同传的录制,但是自己的练习的时候就会出现录制的问题。曾经在一次导专课上遇到过这种尴尬,由于需要将自己的同传练习录音分享给老师和同学听,所以就要把源语和译入语都录制下来…

颜宁课题组再发Cell!1个月时间内4篇顶刊!

全世界只有3.14 % 的人关注了爆炸吧知识本文来源:iNature(作者:枫叶)、微博转自:募格学术6月15日晚,颜宁团队和新南威尔士大学杨洪远团队合作,在Cell 《细胞》在线发表了题为“Structural Basis…

BOOST 线程完全攻略 - 结束语

2019独角兽企业重金招聘Python工程师标准>>> 全文介绍了3个boost::thread的扩展类,希望能给大家书写多线程代码带来便捷。 thread -> controlled_module_ex ->controlled_module 那么我们具体在什么情况下选用不同的扩展类呢? 1.如果你…

.NET Core使用Nlog记录日志

NLog是适用于各种.NET平台(包括.NET标准)的灵活,免费的日志记录平台。NLog使写入多个目标变得容易 。(数据库,文件,控制台)并即时更改日志记录配置。NLog支持结构化 和传统日志记录。NLog的重点…

动态路由协议(RIP)

动态路由协议包括距离矢量路由协议和链路状态路由协议。RIP(Routing InformationProtocols,路由信息协议)是使用最广泛的距离矢量路由协议。RIP 是为小型网络环境设计的,因为这类协议的路由学习及路由更新将产生较大的流量&#x…

这几道挑战极限的烧脑题,烧脑到爽爽爽爽爽!

▲ 点击查看 在美国,有一个天才儿童计划,选拔一批“天才”儿童进入天才班。这个计划是为了保证每个人接受平等教育机会的同时,也为精英成长提供合适的土壤。美国所谓的天才和精英是怎样的标准呢?进入天才班的儿童首先要通过一个叫…

WPF 跟随拖动改变的三次贝塞尔曲线思路

代码不多&#xff0c;思路也很简单&#xff0c;先看看效果&#xff1a;简单示例&#xff0c;所有代码都在MainWindow.xaml和MainWindow.xaml.cs内&#xff0c;Xaml代码&#xff1a;<Window x:Class"WPFDemos.MainWindow"xmlns"http://schemas.microsoft.com/…

php语言难点,PHP知识难点TOP3,挑战一下你

PHP知识难点TOP3,挑战一下你这里有新鲜出炉的PHP设计模式&#xff0c;程序狗速度看过来&#xff01;PHP开源脚本语言PHP(外文名: Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点&#xf…

thymeleaf加载不了js引用_网站首页加载慢解决方案

打开网页&#xff0c;用户最满意的时间是2-5秒&#xff0c;如果用户等待超过10秒&#xff0c;99%的用户会关闭这个网页。那么&#xff0c;是什么原因会导致网站打开慢&#xff1f;又有什么办法解决呢&#xff1f;一般来说&#xff0c;http请求过多、网页过大、服务器性能过差等…

基础设备----笔记

插一条&#xff1a;OSI七层网络模型网络设备调制解调器&#xff1a;将数据&#xff0c;在数字信号和模拟信号之间转换网卡&#xff1a;基本数据转换、信息包的装配和拆装、网络存取控制、数据缓存、生成网络信号等。网卡按主板总线类型分类&#xff1a;ISA---分为8位和16位两种…

黑客大佬:我是如何让50个文件一起骗过AI安防系统的?

全世界只有3.14 % 的人关注了爆炸吧知识转自&#xff1a;大数据文摘编译&#xff1a;邢畅、张睿毅、钱天培你有没有想过当黑客呢&#xff1f;破解手机密码&#xff0c;黑入公司系统&#xff0c;甚至…控制全球电脑。打住打住&#xff01;违法犯罪的念头显然不能有。再退一步讲&…

WTM框架使用技巧之:CI/DI(持续集成/持续部署)

快点关注我们吧作者介绍王晓东&#xff0c;从事工业物联网行业多年&#xff0c;深入了解纺织、汽车零部件等制造业业务。开发过MES、WCS、SCADA、智能产线、质量追溯、工业通讯、linux网关等系统。对跨平台部署、运维有一定经验。使用WTM框架提高了40%的开发效率&#xff0c;WT…

php 建立自己的框架,利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备...

“一个时代结束了&#xff0c;另一个时代开始了。”Framework Interoperability Group(框架可互用性小组)&#xff0c;简称 FIG&#xff0c;成立于 2009 年。FIG 最初由几位知名 PHP 框架开发者发起&#xff0c;在吸纳了许多优秀的大脑和强健的体魄后&#xff0c;提出了 PSR-0 …

python3 UnicodeEncodeError: 'ascii' 错误

2019独角兽企业重金招聘Python工程师标准>>> python 3.4 使用urllib.request.urlopen() 打开url时候&#xff0c;如果url中包含中文&#xff0c;出现了“UnicodeEncodeError: ascii codec cant encode ”的错误&#xff0c;修复步骤如下 在url中有中文的地方加入…

女朋友的道歉方式

1 女朋友的道歉方式2 看吧,无聊的时候什么事都干得出来3 这猫太坏了&#xff01;4 还以为是特效,原来是实物 5 叉子的妙用6 也太信任这块玻璃了吧……7 棉花糖炸酱面......大家感受一下你点的每个赞&#xff0c;我都认真当成了喜欢

单元测试(三)基本使用

介绍本文来演示一下同事教导后的写法&#xff0c;同样有些单元测试是为了演示而写的单元测试。本文使用组件&#xff1a;Xunit、Moq以及dotNet相关知识注&#xff1a;本文内容基于上一篇操作首先指定一个方法编写单元测试&#xff0c;并且要保证没有其他因素干扰的情况下去进行…

帆软帮助文档_帆软:像阿甘一样,奔跑在商业智能的赛道上

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 晶少出品 | CSDN云计算(ID&#xff1a;CSDNcloud)故事开始于一片洁白的羽毛&#xff0c;从空中降落缓缓飘过房屋、街道、树梢&#xff0c;最终落在了主人公阿甘的脚旁&#xff0c;他没有过多思考就将羽毛轻轻收藏书中……这是…

叫板BBC!80后湖南姑娘,花3年首次拍出水下的中国,惊艳了全世界

全世界只有3.14 % 的人关注了爆炸吧知识众所周知&#xff0c;中国拥有约960万平方公里的陆地面积&#xff0c;我们生活在这片大地之上。但却鲜有人知道&#xff0c;中国的水下也有一座城。这是一座位于杭州千岛湖下的千年古城&#xff0c;历经61年&#xff0c;它们在水底&#…

lua loadstring传递参数_lua学习之函数篇

函数函数是对语句和表达式进行抽象的主要机制两种用法一是可以完成特定的任务&#xff0c;一句函数调用被视为一条语句二是以只用来计算并返回特定的结果&#xff0c;视为一句表达式print("Hello, World")a math.sin(3) math.cos(10)print(os.date())​无论哪种用法…

EF Core 6 简化的数据库上下文注册

EF Core 6 简化的数据库上下文注册IntroEF Core 6 将简化现在的服务注册&#xff0c;DbContext 的服务注册将会更简单一些Sample直接来看示例代码吧&#xff1a;现在我们注册 EF Core 的 DbContext 通常是这样的&#xff1a;const string connectionString "DataSourcete…