固定吞吐量定时器和指定集合点,都是使用JMeter进行性能测试的常用手段,但是通过对测试过程的监控和测试结果的分析,都是在性能测试中值得关注部分。

JMeter也可以监控服务器的性能参数,如:CPU、内存、IO等,不过需要下载一些插件。

本文主要说明如何通过JMeter插件,来监控服务器CPU、内存、磁盘、网络等相关资源。

1、监控插件安装

(1)需要安装的插件

JMeter对服务器的监控,需要如下插件包:

  1. JmeterPlugins-Extras.zip
  2. JmeterPlugins-Standard.zip
  3. ServerAgent-2.2.1.zip

提示:

JMeter插件下载地址:https://jmeter-plugins.org/downloads/old

  • JmeterPlugins-Extras.zipJmeterPlugins-Standard.zip都可以通过上面链接下载。
  • ServerAgent-2.2.1.zip,需要通过其他途径下载。

(2)安装插件方式

插件包里面说明文档中的提示:

# 安装使用
Installation and Usage
# 只需将 JAR 文件复制到 JMeter 的 lib/ext 目录中即可。
Just copy the JAR file into JMeter's lib/ext directory.
# 然后您可以启动 JMeter 并向您的测试计划添加其他项目。
Then you can start JMeter and add additional items to your Test Plan.
# 需要 Java 1.6 版和 JMeter 2.4。
Java version 1.6 and JMeter 2.4 are required.

所以我们需要操作的步骤:

  1. JMeterPlugins-Extras-1.4.0.zip文件解压,找到lib/ext文件夹里的JMeterPlugins-Extras.jar,放到JMeter安装目录的lib/ext目录里面。
  2. 同理,将JMeterPlugins-Standard-1.4.0.zip解压,找到lib/ext下的JMeterPlugins-Standard.jar,放到JMeter安装目录的lib/ext目录里面。

完成上面步骤后,我们启动JMeter,如果已启动JMeter,需要进行重启。

执行操作:测试计划 —> 右键添加 —> 监听器,可以看到监听器中多了一些东西,看到这些jp@gc开头的组件则表明插件已生效。

如下图所示:

(3)常用组件简要介绍

  1. jp@gc - Bytes Throughput Over Time:不同时间吞吐量展示(图表) 。

    聚合报告里,Throughput是按请求个数来展示的,比如说1.9/sec,就是每秒发送1.9个请求。而这里的展示是按字节Bytes来展示的图表。
  2. jp@gc - Composite Graph:混合图表。在它的Graphs里面可以设置多个图表一起展示,它可以同时展示多个图表。
  3. jp@gc - Hits per Second:每秒点击量。
  4. jp@gc - PerfMon Metrics Collector:服务器性能监测控件,包括CPUMemoryNetworkI/O等等。
  5. jp@gc - Reponse Latencies Over Time:记录客户端发送请求完成后,服务器端返回请求之前这段时间。
  6. jp@gc - Reponse Times Distribution:显示测试的响应时间分布,X轴显示由时间间隔分组的响应时间,Y轴包含每个区间的样本数。
  7. jp@gc - Transactions per Second:每秒事务数,服务器每秒处理的事务数。
  8. jp@gc - Reponse Times vs Threads:展示事务响应时间与虚拟用户数之前的对应关系。

2、启动监控服务

(1)在Linux系统中

ServerAgent-2.2.1文件上传到需要监控服务器上,执行命令:ServerAgent-2.2.1\bin\startAgent.sh,来启动ServerAgent服务,默认端口4444。

如下所示:

# 1.查看当前所在路径,和路径下的文件
[root@localhost ServerAgent-2.2.1]# pwd
/usr/local/ServerAgent-2.2.1
[root@localhost ServerAgent-2.2.1]# ll
总用量 172
-rw-r--r--. 1 root root 10821 6月 8 11:20 CMDRunner.jar
drwxr-xr-x. 2 root root 4096 6月 8 11:20 lib
-rw-r--r--. 1 root root 85433 6月 8 11:20 LICENSE
-rw-r--r--. 1 root root 62848 6月 8 11:20 ServerAgent.jar
-rw-r--r--. 1 root root 63 6月 8 11:20 startAgent.bat
-rw-r--r--. 1 root root 74 6月 8 11:20 startAgent.sh # 2.赋予startAgent.sh文件执行权限
[root@localhost ServerAgent-2.2.1]# chmod +x startAgent.sh
[root@localhost ServerAgent-2.2.1]# ll
总用量 172
-rw-r--r--. 1 root root 10821 6月 8 11:20 CMDRunner.jar
drwxr-xr-x. 2 root root 4096 6月 8 11:20 lib
-rw-r--r--. 1 root root 85433 6月 8 11:20 LICENSE
-rw-r--r--. 1 root root 62848 6月 8 11:20 ServerAgent.jar
-rw-r--r--. 1 root root 63 6月 8 11:20 startAgent.bat
-rwxr-xr-x. 1 root root 74 6月 8 11:20 startAgent.sh # 3.启动startAgent服务
[root@localhost ServerAgent-2.2.1]# ./startAgent.sh
INFO 2021-06-08 11:21:45.863 [kg.apc.p] (): Binding UDP to 4444
INFO 2021-06-08 11:21:47.073 [kg.apc.p] (): Binding TCP to 4444
INFO 2021-06-08 11:21:47.090 [kg.apc.p] (): JP@GC Agent v2.2.0 started

提示:

在Linux系统中执行命令./startAgent.sh时,可能会提示:-bash: ./startAgent.sh: 权限不够,那么我们需要执行命令:chmod +x startAgent.sh或者chmod 777 startAgent.sh,给startAgent.sh文件赋予执行权限。

(2)在Windows系统中

在Windows服务器中启动startAgent.bat文件即可。

默认端口为4444,也可以参数指定 –udp-port 4445 –tcp-port 4445

如下图所示:

(在服务器中的任何目录中启动都可以)

(3)JMeter相关配置

我们可以修改bin/jmeter.properties文件中的一些配置项,把有关系jmeterplugins和thread的属性项都打开。

例如:jmeter.save.saveservice.thread_counts=true,表示如果没有把thread_count这个参数打开,是不会记录到线程有关的信息的。

不配置也没有问题,能够根据自己实际需求配置,那自然是最好的,这些都需要我们在之后的日常工作中,慢慢的积累总结。

(4)总结

JMeterPlugins-Standard插件和JMeterPlugins-Extras插件相当于是客户端。

ServerAgent相当于是服务端。

3、使用JMeter监控服务器

(1)测试计划内包含的元件

添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组下,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
  4. 在线程组下,添加定时器“固定吞吐量定时器”组件:选中“线程组”右键 —> 添加 —> 定时器 —> 固定吞吐量定时器

最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

(2)HTTP请求界面内容

任何取样器请求都可以,我这里就以一个登陆请求为例了。

编写内容如下图:

(3)配置jp@gc-PerfMon Metrics Collector组件

jp@gc-PerfMon Metrics Collector组件中,添加要监控的服务器地址,和端口号。

端口默认为4444,该端口号要与待监控服务器上的ServerAgent服务的端口一样。

最后选择在被监控服务器中收集哪些资源的指标。

如下图所示:

jp@gc-PerfMon Metrics Collector组件简单介绍:

  • 名称jp@gc-PerfMon Metrics Collector组件的自定义名称,见名知意最好。
  • 注释:即添加一些备注信息,对该jp@gc-PerfMon Metrics Collector组件的简短说明,以便后期回顾时查看。
  • Servers to Monitor (ServerAgent must be started, see help):设置要监控的服务器(必须启动 ServerAgent服务)
    • Host/IP:填写被监控服务器的主机IP地址或者域名。
    • Port:被监控服务器上启动的ServerAgent服务的端口。
    • Metric to collect:选择被监控服务器上要收集的指标。
    • Add Row:添加一个监控设置。
    • Copy Row:复制一条监控设置。
    • Delete Row:删除一条监控设置。
  • 所有数据写入一个文件:这个部分的操作前面说过很多次了。就是可以把JMeter脚本执行过程中,请求产生的内容,保存到一个文件中。也可以设置把请求中的哪些内容存储到文件中。
  • 最下面是监控结果的图形化展示。

(4)线程组元件配置

如果这时候就运行JMeter脚本,你会发现Chart区域并无曲线图。现象是成功连接然后立刻断开了,并没有获取我们想要的曲线图。

原因是因为线程组只运行一次,若使其能够获取一段时间的数据,在Chart区域就能显示出对应的曲线图了。

我们需要将线程组元件的:

  1. 循环次数:勾选为”永远”;
  2. 勾选调度器:置脚本持续跑多长时间。

如下图所示:

简单说明:

  • 线程数:就是并发数,目标100采取叠加的方式去进行添加。
  • 启动时间:每秒启动多少个(可以根据结果去进行调整)。策略:想要服务器压力大点就时间少点,想要服务器的压力慢慢增加就时间长点。
  • 循环次数:表示每一个线程跑几次。指定次数or永远(跟下面的持续时间配合使用)。
  • 调度器:配合永远使用,去设置持续时间。

示例:设置线程数100,勾选永远,就会一直执行,但调度器中持续时间设置时间,就是在这段时间内,这100个用户一直执行。

(5)查看监控结果

执行脚本,查看监控结果。

我们回到jp@gc-PerfMon Metrics Collector组件界面中,可以看到Chart选项页中,如下图所示:

从上图中我们可以看到,在脚本运行的过程中,服务器的CPU、内存、磁盘IO、网络IO的一个使用情况,都可以通过JMeter进行监控了。

提示:图表可导出成.csv文件,配合聚合报告,分析服务器性能状况。

说明:

1)在Chart区域右键,会出现操作菜单

  • Copy Image to Clipboard:复制图片到剪贴板。
  • Save Image as…:图片另存为。
  • Export to CSV:导出为CSV格式文件。

2)Rows选项页中可以设置曲线图中显示的被监控项

如下图所示:

3)Settings选项页中的设置项

  1. Use relative times:使用相对时间,默认勾选,显示为从监控起一段时间内的曲线图;不勾选则显示当前系统时间内的曲线图。
  2. Auto-zoom rows for best fit:自动缩放最佳拟合行,默认勾选,不建议取消勾选。
  3. Line width:线条宽度,默认为1,不建议修改。
  4. Draw markers:画标记,默认不勾选,勾选后曲线转折点被标记。
  5. Paint gradient:颜色梯度,默认勾选。
  6. Limitnumber of points in row to [] points:行的极限点数,默认不勾选。
  7. Force maximum Y axis value to []:Y轴最大值,默认不勾选。

4、遇到的问题

在运行JMeter脚本的时候,出现java.lang.NoSuchMethodError: org.apache.jmeter.samplers.SampleSaveConfiguration.setFormatter(Ljava/text/DateFormat;)V报错。

在JMeter日志查看器面板,出现如下所示:

2021-06-08 00:11:48,093 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2021-06-08 00:11:48,093 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2021-06-08 00:11:48,095 ERROR o.a.j.JMeter: Uncaught exception:
java.lang.NoSuchMethodError: org.apache.jmeter.samplers.SampleSaveConfiguration.setFormatter(Ljava/text/DateFormat;)V
at kg.apc.jmeter.JMeterPluginsUtils.doBestCSVSetup(JMeterPluginsUtils.java:272) ~[JMeterPlugins-Extras.jar:?]
at kg.apc.jmeter.perfmon.PerfMonCollector.setupSaving(PerfMonCollector.java:140) ~[JMeterPlugins-Standard.jar:?]
at kg.apc.jmeter.perfmon.PerfMonCollector.testStarted(PerfMonCollector.java:117) ~[JMeterPlugins-Standard.jar:?]
at org.apache.jmeter.reporters.ResultCollector.testStarted(ResultCollector.java:350) ~[ApacheJMeter_core.jar:5.0 r1840935]
at kg.apc.jmeter.vizualizers.CorrectedResultCollector.testStarted(CorrectedResultCollector.java:28) ~[JMeterPlugins-Extras.jar:?]
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:215) ~[ApacheJMeter_core.jar:5.0 r1840935]
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:384) ~[ApacheJMeter_core.jar:5.0 r1840935]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]

原因

是因为JMeterPlugins-Extras-1.4.0插件和JMeterPlugins-Standard-1.4.0插件,遇到高版本JMeter会出现兼容问题。

解决办法两种

1)使用JMeter3.1版本,搭配JMeter的插件Extras1.4.0Standard -plugin1.4.0使用。只支持JMeter以下版本3.2,不包括3.2版本!!!

2)使用jmeter-plugin-manager(JMeter插件管理器)

直接下载所需要的PerfMon (Servers Performance Monitoring)组件。

先在Avaliable Plugins搜索PerfMon ,进行勾选需要安装的插件。

ApplyChanges and Restart jmeter按钮进行安装。

此种方式安装的PerfMon插件为2.1version,解决了JMeter版本过高,导致监控插件不兼容的问题。

如下图所示:

提示:这种方式比较推荐,毕竟高版本修复了很多问题,此方法安装的jp@gc -PerfMon Metrics Collector插件监控,支持到JMeter5.1以及最新版本。

参考:

『动善时』JMeter基础 — 61、使用JMeter监控服务器的更多相关文章

  1. 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求

    目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...

  2. 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)

    目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...

  3. 『动善时』JMeter基础 — 2、JMeter的安装和启动

    1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...

  4. 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置

    目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...

  5. 『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

    目录 1.测试计划中的元件 2.数据文件内容 3.函数助手配置 (1)函数助手的打开方式 (2)函数助手界面介绍 (3)编辑后的函数助手界面 4.HTTP请求组件内容 5.线程组元件内容 6.脚本运行 ...

  6. 『动善时』JMeter基础 — 47、JMeter的HTTP代理服务器详细介绍

    目录 1.HTTP代理服务器的添加 2.HTTP代理服务器界面详解 (1)State:状态 (2)Global Settings:全局设置 (3)Test Plan Creation:测试计划创建 ( ...

  7. 『动善时』JMeter基础 — 21、HTTP Cookie管理器的使用

    目录 1.在HTTP信息头管理器组件中添加Cookie信息 (1)测试计划内包含的元件 (2)请求取样器内容 (3)HTTP信息头管理器内容 (4)查看结果 2.使用HTTP Cookie管理器组件来 ...

  8. 『动善时』JMeter基础 — 8、JMeter主要元件介绍

    目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...

  9. 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍

    目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...

随机推荐

  1. A Child's History of England.38

    CHAPTER 12 ENGLAND UNDER HENRY THE SECOND PART THE FIRST Henry Plantagenet, when he was but [only] t ...

  2. Angular @Input讲解及用法

    1.什么是@input @input的作用是定义模块输入,是用来让父级组件向子组件传递内容. 2.@input用法 首先在子组件中将需要传递给父组件的变量用@input()修饰 需要在子组件ts文件i ...

  3. Linux学习 - 数值运算

    1 declare 声明变量类型 declare [+/-] [选项] 变量名 - 给变量设定类型属性 + 取消变量的类型属性 -i 将变量声明为整数型 -x 将变量声明为环境变量(同export) ...

  4. KVM配置

    安装依赖包(因最小化安装) [root@slave-master ~]# yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pc ...

  5. spring cloud config center Git SSH configuration

    Git SSH configuration using properties By default, the JGit library used by Spring Cloud Config Serv ...

  6. 搭建mybatis开发环境

    1.创建工程 <groupId>com.hope</groupId>     <artifactId>day01_eesy_01mybatis</artifa ...

  7. 注册页面css版本

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. angular关于select的留白问题

    Angular select留白的问题 小白的总结,大神勿喷:需要转载请说明出处,如果有什么问题,欢迎留言 总结:出现留白说明你的ng-model的值在option的value中没有对应的值: 一.直 ...

  9. CPU的负载

    目录 一.简介 二.合理的负载 一.简介 使用top或者uptime命令可以看到cpu平均负载,1,5,15分钟 平均负载包括以下几个部分: 正在运行的进程.正在使用cpu做计算的进程,ps看到R 也 ...

  10. 学习整理--flex布局(1)

    父元素容器属性 flex-direction: row(默认).row-reverse.column.column-reverse row: 横向正序排列子元素 colimn: 竖向正序排列子元素 r ...