当前位置: 代码网 > it编程>编程语言>Java > 【压力测试 1】JMeter压力测试、Linux中CPU占用率分析

【压力测试 1】JMeter压力测试、Linux中CPU占用率分析

2024年08月06日 Java 我要评论
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

下载地址:jmeter-plugins.org

安装:下载后文件为plugins-manager.jar格式,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即可。

启动jemter,点击选项,最下面的一栏,如下图所示:

打开后界面如下:

installed plugins(已安装的插件):即插件jar包中已经包含的插件,可以通过选中勾选框,来使用这些插件;

available plugins(可下载的插件):即该插件扩展的一些插件,可以通过选中勾选框,来下载你所需要的插件;

upgrades(可更新的插件):即可以更新到最新版本的一些插件,一般显示为加粗斜体,可以通过点击截图右下角的apply changes and restart jmeter按钮来下载更新;

ps:一般不建议进行更新操作,因为最新的插件都有一些兼容问题,而且很可能导致jmeter无法使用(经常报加载类异常)!!!

建议使用jmeter最新的3.2版本来尝试更新这些插件。

二、transactions per second


即tps:每秒事务数,性能测试中,最重要的2个指标之一。该插件的作用是在测试脚本执行过程中,监控查看服务器的tps表现————比如整体趋势、实时平均值走向、稳定性等。

jmeter本身的安装包中,监视器虽然提供了比如聚合报告这种元件,也能提供一些实时的数据,但相比于要求更高的性能测试需求,就稍显乏力。

某次压力测试tps变化展示图:

三、response times over time


即trt:事务响应时间,性能测试中,最重要的两个指标的另外一个。该插件的主要作用是在测试脚本执行过程中,监控查看响应时间的实时平均值、整体响应时间走向等。

使用方法如上,下载安装配置好插件之后,重启jmeter,添加该监视器,即可实时看到实时的trt数值及整体表现。

某次压力测试trt变化展示图:

四、perfmon metrics collector


即服务器性能监控数据采集器。在性能测试过程中,除了监控tps和trt,还需要监控服务器的资源使用情况,比如cpu、memory、i/o等。该插件可以在性能测试中实时监控服务器的各项资源使用。

下载地址:http://jmeter-plugins.org/downloads/all/或链接:http://pan.baidu.com/s/1skzs0zb 密码:isu5

下载界面如下:

其中jmeterplugins-standard和jmeterplugins-extras是客户端的插件,serveragent是服务端的插件。

下载成功后,复制jmeterplugins-extras.jar和jmeterplugins-standard.jar两个文件,放到jmeter安装文件中的lib/ext中,重启jmeter,即可看到该监视器插件。

将serveragent-2.2.1.jar上传到被测服务器,解压,进入目录,windows环境,双击serveragent.bat启动;linux环境执serveragent.sh启动,默认使用4444端口。

如出现如下图所示情况,即表明服务端配置成功:

1、服务端启动校验

cmd进入命令框,观察是否有接收到消息,如果有,即表明serveragent成功启动。

2、客户端监听测试

给测试脚本中添加jp@gc - perfmon metrics collector监听器,然后添加需要监控的服务器资源选项,启动脚本,即可在该监听器界面看到资源使用的曲线变化。如下图所示:

在脚本启动后,即可从界面看到服务器资源使用的曲线变化,chart表示主界面显示,rows表示小界面以及不同资源曲线所代表的颜色,settings表示设置,可选择自己需要的配置。

ps:注意测试脚本需要持续运行一段时间,才可以看到具体的曲线变化,否则serveragent端会断开连接!

五、线程组


1、线程数:表示启动的线程数,也就是并发的数量。

2、ramp-up period:表示1秒内启动1个线程,默认为0,表示程序启动后,立即开启1个线程,设置太大或太小都不是很好,设置的最佳值,ramp-up period = 线程数/吞吐量。

3、循环次数:表示每个线程要发送多少次请求。

4、调度器:顾名思义,持续时间如果设置为60,表示持续1分钟,通常循环次数和调度器设置一个即可。

六、添加http请求


一个http请求有着许多的配置参数,下面将详细介绍:

1、名称:本属性用于标识一个取样器,建议使用一个有意义的名称。

2、注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。

3、服务器名称或ip :http请求发送的目标服务器名称或ip地址。

4、端口号:目标服务器的端口号,默认值为80 。

5、协议:向目标服务器发送http请求时的协议,可以是http或者是https ,默认值为http 。

6、方法:发送http请求的方法,可用方法包括get、post、head、put、options、trace、delete等。

7、content encoding :内容的编码方式,默认值为iso8859

8、路径:目标url路径(不包括服务器地址和端口)

9、自动重定向:如果选中该选项,当发送http请求后得到的响应是302/301时,jmeter 自动重定向到新的页面。

10、use keep alive : 当该选项被选中时,jmeter 和目标服务器之间使用 keep-alive方式进行http通信,默认选中。

11、use multipart/from-data for http post :当发送http post 请求时,使用use multipart/from-data方法发送,默认不选中。

12、同请求一起发送参数 : 在请求中发送url参数,对于带参数的url ,jmeter提供了一个简单的对参数化的方法。用户可以将url中所有参数设置在本表中,表中的每一行是一个参数值对(对应rul中的 名称1=值1)。

13、同请求一起发送文件:在请求中发送文件,通常,http文件上传行为可以通过这种方式模拟。/14、从html文件获取所有有内含的资源:当该选项被选中时,jmeter在发出http请求并获得响应的html文件内容后,还对该html进行parse 并获取html中包含的所有资源(图片、flash等),默认不选中,如果用户只希望获取页面中的特定资源,可以在下方的embedded urls must match 文本框中填入需要下载的特定资源表达式,这样,只有能匹配指定正则表达式的url指向资源会被下载。

15、用作监视器:此取样器被当成监视器,在monitor results listener 中可以直接看到基于该取样器的图形化统计信息。默认为不选中。

16、save response as md5 hash:选中该项,在执行时仅记录服务端响应数据的md5值,而不记录完整的响应数据。在需要进行数据量非常大的测试时,建议选中该项以减少取样器记录响应数据的开销。

七、系统吞吐量 qps(tps)


系统吞吐量 = 每秒处理的事务数

qps(tps)= 并发数/平均响应时间

一个系统吞吐量通常由qps(tps)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。

八、聚合报告


我认为聚合报告应该是jmeter压力测试软件中最重要的报告。

1. #samples:样本数,如果你看过上一篇,这个就是前面我们那个公式算出来的结果

(loop count(loop controler)*number of threads*loop count(group))

2. average:平均响应时间。

3. median:中位数,50%用户响应时间。

4. line:90%用户响应时间。

5. min:最小响应时间。

6. max:最大响应时间。

7. error%:本次测试中出现错误的请求的数量/请求的总数

8. throughput:吞吐量,表示每秒完成的请求数。

9. kb/sec:每秒从服务器端接收到的数据量(只是接收)。

九、linux查看程序运行情况


1、top

top命令是linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于windows的任务管理器。

top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户 终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中cpu最“敏感”的任务列表.该命令可以按cpu使用.内存使用和执行时间 对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

在linux系统中,top命令可谓是分析系统性能最方便的工具,而且top还是个交互式工具;通过top命令可以清楚地了解到正在执行的进程信息包括进程id,内存占用率,cpu占用率等。其实就跟window的任务管理器类似。

2、查看cpu使用率

这个命令可根据实际线程组中的设置,进行cpu使用率方面的查看。

[root@sss ~]# sar -u 1 5

linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz) 04/16/2019 x86_64 (1 cpu)

04:56:03 pm cpu %user %nice %system %iowait %steal %idle

04:56:04 pm all 0.00 0.00 0.00 0.00 0.00 100.00

04:56:05 pm all 0.00 0.00 0.00 0.00 0.00 100.00

04:56:06 pm all 0.99 0.00 0.99 0.00 0.00 98.02

04:56:07 pm all 0.00 0.00 0.00 0.00 0.00 100.00

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。

深知大多数java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上java开发知识点,不论你是刚入门android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
…(img-ufbvz7n1-1715158015042)]

[外链图片转存中…(img-vxkadflt-1715158015043)]

[外链图片转存中…(img-wkyivext-1715158015043)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上java开发知识点,不论你是刚入门android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com