固定吞吐量定时器和指定集合点,都是使用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. accessory, accident

    accessory 1. belt, scarf, handbag, Penny用rhinestone做的小首饰(Penny Blossom)都是accessory2. With default se ...

  2. Gradle安装与配置

    一.Gradle安装 1.Gradle安装 (1)先安装JDK/JRE (2)Gradle下载官网 Gradle官网 (3)解压安装包到想安装到的目录.如D:\java\gradle-5.2.1 (4 ...

  3. Shell变量与算术运算

    区分两个 Shell Shell 语言与 Shell 解释器 Shell 语言 写 Shell 脚本使用的是 Shell 语言,Shell 既是一种命令语言,又是一种程序设计语言. 作为命令语言,它交 ...

  4. mybatis缓存+aop出现的问题

    在对某些特殊数据进行转换时,getOne方法后执行fieleInfoHandle进行转换,如果直接使用fixedTableData进行操作,没有后续的二次调用这样是没问题的,但是在后面当执行完upda ...

  5. 【Java 8】 集合间转换工具——Stream.collect

    集合运算 交集 (list1 + list2) List<T> intersect = list1.stream() .filter(list2::contains) .collect(C ...

  6. node环境变量配置

    1.Node.js 官方网站下载:https://nodejs.org/en/ 2.打开安装,傻瓜式下一步即可,然后配置环境变量 3.因为在执行例如npm install webpack -g等命令全 ...

  7. 出现 CannotAcquireLockException 异常

    项目出现  CannotAcquireLockException异常 原因: 百度了一下,是由于 Spring 事务嵌套造成死锁 结合自己的, handleWithdraw 方法底层有调用 其他 se ...

  8. 令无数程序员加班的 Log4j2 远程执行漏洞复现

    前情提要 Apache 存在 Log4j 远程代码执行漏洞,将给相关企业带来哪些影响?还有哪些信息值得关注? 构建maven项目引入Log4j2 编写 pom 文件 <?xml version= ...

  9. Mongodb集群调研

    目录 一.高可用集群的解决方案 二.MongoDB的高可用集群配置 三.Mongo集群实现高可用方式详解 四.Sharding分片技术 一.高可用集群的解决方案 高可用性即HA(High Availa ...

  10. vscode 设置

    { "security.workspace.trust.enabled": false, "workbench.editor.enablePreview": f ...