如何使用jmeter进行系统压力测试?

1.1 常用组件以及参数介绍

1.1.1 基本软件

需准备一下工具

压测工具: jmeter-2.13

服务器性能监控:jmeter插件 ServerAgent-2.2.1

压测时,直接使用jmeter模拟终端发起交易,jmeter可统计交易并发;ServerAgent在服务器启动agent,开放4444端口,jmeter通过agent获取相关的服务器性能数据,包括CPU,内存,网络IO,磁盘IO等。另外,常用的组件可能还需要额外下载,比如阶梯压测jar包JMeterPlugins-Standard.jar,tps监控jar包cmdrunner-2.3.jar,jmeter-plugins-cmn-jmeter-0.7.jar,json-lib-2.4-jdk15.jar等。下载完成后需要放置到jemeter安装目录/lib下才可以生效。

1.1.2 基本线程组

基本线程组是压测的基本单元的集合,一个线程组可以下放多个组件,见下图

如何使用jmeter进行系统压力测试?_第1张图片

基本线程组只允许进行定量线程压测,其中:

  • 线程数:表示线程组在运行之后线程最终开启的数量,也可以理解为同时多少个用户并发发起交易。

  • Ramp-up时间(秒):表示经历多长时间拉起所有线程。如果配置0,那么表示在压测开始后瞬间启动所有线程,通常不建议配置0,因为如果配置的线程数很大且时间配置0的话,对系统冲击较大,建议配置几秒的缓冲时间。

  • 循环次数:表示在每个线程交易发送的次数。如果线程数配置20,循环次数配置2。那么表示总发送交易量为20*2=40。

  • 永远:勾选该选项,表示交易不停止,一直循环发送。

  • 持续时间(秒):表示交易发送持续的时间,到点停止。

1.1.3 阶梯压测线程组

阶梯压测线程组,可以自动化的持续加压,适合压测出当前系统可以承载的最大并发,以及最高tps,配置选项见下图:

如何使用jmeter进行系统压力测试?_第2张图片

  • this group will start:表示总共要启动的线程数;若设置为 100,表示总共会加载到 100 个线程

  • first,wait for:从运行之后多长时间开始启动线程;若设置为 0 秒,表示运行之后立即启动线程

  • then start:初次启动多少个线程;若设置为 0 个,表示初次不启动线程

  • next add:之后每次启动多少个线程;若设置为 10个,表示每个梯次启动 10 个线程

  • threads every:当前运行多长时间后再次启动线程,即每一次线程启动完成之后的持续时间;若设置为 30 秒,每梯次启动完线程之后再运行 30 秒

  • using ramp-up:启动线程的时间;若设置为 5 秒,表示每次启动线程都持续 5 秒(和基础线程组的ramp-up一样意思)

  • then hold load for:线程全部启动完之后持续运行多长时间,如果设置为 60 秒,表示 100 个线程全部启动完之后再持续运行 60 秒

  • finally,stop/threads every:多长时间释放多少个线程;若设置为 5 个和 1 秒,表示持续负载结束之后每 1 秒钟释放 5 个线程

1.1.4 HTTP请求

交易http协议的发送端,与常规接口调试基本一致,这里不再赘述。

消息体数据:通常为json报文。

如何使用jmeter进行系统压力测试?_第3张图片

1.1.5 TCP取样器

交易发送Tcp协议的发送端,报文格式通常但不限于xml报文。

如何使用jmeter进行系统压力测试?_第4张图片

如何使用jmeter进行系统压力测试?_第5张图片

注意:Re-use connection表示长连接,务必根据实际情况选择。选错可能会导致交易大规模失败的情况发生。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

1.1.6 查看结果树

用来实时追踪交易是否成功的监视器。绿色表示成功,红色表示失败。

如何使用jmeter进行系统压力测试?_第6张图片

1.1.7 响应断言

响应断言一般与结果树配合使用,因为结果树只返回网络层的成功与失败,并不会校验返回报文具体参数是否正常,响应断言可以对报文返回结果做校验,进而反映到结果树中。比如:假定返回报文中必须包含0000字符,即交易状态码为0000才认为交易成功,那可按下图配置:

如何使用jmeter进行系统压力测试?_第7张图片

配置完成后,在压测过程中,如果返回报文不包含0000,交易会以失败形式体现在结果树中。

1.1.8 聚合报告

用来体现当前压测交易的耗时,样本数,异常量,吞吐量等。

如何使用jmeter进行系统压力测试?_第8张图片

1.1.9 汇总报告

汇总报告数据与聚合报告类似,多出一个标准差,标准差数值越低表示系统越稳定。两个报告的吞吐量均表示tps。

如何使用jmeter进行系统压力测试?_第9张图片

1.1.10 Transactions per Second

tps实时统计监控,用来体现压测过程中tps变化的走势图,下图可知系统在稳定后,tps在280-320浮动。

如何使用jmeter进行系统压力测试?_第10张图片

1.1.11 Active Threads Over Time

线程量实时统计走势图,下图可知,当前线程组在进行阶梯压测,因为线程数在稳定上升。

如何使用jmeter进行系统压力测试?_第11张图片

1.1.12 PerfMon Metrics Collector

服务器资源监控组件,功能极其强大,可以同时监控不同服务器的性能数据,包括CPU,内存,网络IO,磁盘IO等。

如何使用jmeter进行系统压力测试?_第12张图片

其中Host/IP配置你要监控的服务器地址,端口默认4444,Metric to collect配置如下:

如何使用jmeter进行系统压力测试?_第13张图片

1.1.13 变量定义组件

如何使用jmeter进行系统压力测试?_第14张图片

通过定义变量名,可以在软件内部全域使用,调用方式${参数名}。例如

如何使用jmeter进行系统压力测试?_第15张图片

1.1.14 CSV数据格式组件

当用户需使用大量个人自定义数据时。需自定义数据文件,然后通过CSV数据组件引用。这里以用户身份证号举例。文件名如下图以.csv格式结尾。

文件内容如下图,如果需要多种类型数据,请逐行用逗号分隔。

如何使用jmeter进行系统压力测试?_第16张图片

数据文件准备好后,使用CSV数据格式组件引用

如何使用jmeter进行系统压力测试?_第17张图片

软件内部同样使用${变量名}调用,如下图

如何使用jmeter进行系统压力测试?_第18张图片

1.1.15 吞吐量控制器

如何使用jmeter进行系统压力测试?_第19张图片

用于分发交易量,一般配合线程组使用。

吞吐量设置选Total Executions以个数计算,选percent Executions则以百分比来算的,设置80即总线程数的80%

1.2 Windows环境压测步骤

这里以定量线程20压测5分钟为例

1. 将组件jar包放入jemeter安装目录lib包。

如何使用jmeter进行系统压力测试?_第20张图片

2. 双击bin目录的jmeter.bat启动软件。

如何使用jmeter进行系统压力测试?_第21张图片

3. 修改软件语言为中文

如何使用jmeter进行系统压力测试?_第22张图片

4. 添加定量线程组

如何使用jmeter进行系统压力测试?_第23张图片

5. 设置定量线程组线程量为20。持续时间300(5分钟)秒

如何使用jmeter进行系统压力测试?_第24张图片

6. 添加TCP取样器

如何使用jmeter进行系统压力测试?_第25张图片

7. 设置取样器参数,设置ip 端口,设置报文

如何使用jmeter进行系统压力测试?_第26张图片

8. 添加结果树

如何使用jmeter进行系统压力测试?_第27张图片

9. 添加响应断言,设置检测字符串

如何使用jmeter进行系统压力测试?_第28张图片

10.添加监听tps监听与线程数监听

如何使用jmeter进行系统压力测试?_第29张图片

11. 添加服务器环境资源监听

如何使用jmeter进行系统压力测试?_第30张图片

12. 配置服务器环境监听

这里以监听CPU为例,其它监控类似,这里不再赘述

如何使用jmeter进行系统压力测试?_第31张图片

13. 配置结束后,需要在服务器启动监控控件,jmeter才能实时获取服务器动态信息。

14. 登陆要监控的服务器,上传ServerAgent

如何使用jmeter进行系统压力测试?_第32张图片

15. 进入该目录执行./startAgent.sh。如果要不中断命令使用nohup ./startAgent.sh > /dev/null 2>&1

如何使用jmeter进行系统压力测试?_第33张图片

16. 启动成功后如图(如果启动不成功,检查4444端口是否被占用)

17. 将要监控的服务器startAgent启动完毕后,返回jmeter。

18. 在要启动的线程组右键,保证该线程组处于启用状态(启用按钮置灰,说明目前在启用状态),同时将其他线程组禁用。

如何使用jmeter进行系统压力测试?_第34张图片

19. 开始启动压测

如何使用jmeter进行系统压力测试?_第35张图片

20.等待结束分析数据即可

如何使用jmeter进行系统压力测试?_第36张图片

1.3 Linux环境压测步骤

1. 将Jmeter 拷贝到服务器

2. 将压测案例 以 .jmx结尾的文件拷贝到bin目录下

3. 进入Jmeter目录,给/bin目录 加权限

chmod –R 777 bin/

4. 进入bin目录 执行命令

sh jmeter.sh -n -t dc1000.jmx -l report.jtl 注:dc1000.jmx 以你实际案例名为主

5. 等待压测完成

如何使用jmeter进行系统压力测试?_第37张图片

完成后会在bin目录下生成一个report.jtl

6. 将 report.jtl 导出到本地,打开本地jmeter,打开测试案例,分别点击聚合报告、汇总报告、查看结果树,将 report.jtl 导入测试案例。

如何使用jmeter进行系统压力测试?_第38张图片

7. 导入后即可查看压测结果。

1.4 总结

本文主要介绍了jemeter常用组件的使用方法以及在windows环境和linux环境的压测步骤,希望对你有所帮助,如果你觉得有用的话,不妨点赞收藏一下。

你可能感兴趣的:(jmeter,压力测试)