『动善时』JMeter基础 — 61、使用JMeter监控服务器
固定吞吐量定时器和指定集合点,都是使用JMeter进行性能测试的常用手段,但是通过对测试过程的监控和测试结果的分析,都是在性能测试中值得关注部分。
JMeter也可以监控服务器的性能参数,如:CPU、内存、IO等,不过需要下载一些插件。
本文主要说明如何通过JMeter插件,来监控服务器CPU、内存、磁盘、网络等相关资源。
1、监控插件安装
(1)需要安装的插件
JMeter对服务器的监控,需要如下插件包:
JmeterPlugins-Extras.zip
JmeterPlugins-Standard.zip
ServerAgent-2.2.1.zip
提示:
JMeter插件下载地址:https://jmeter-plugins.org/downloads/old
JmeterPlugins-Extras.zip
和JmeterPlugins-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.
所以我们需要操作的步骤:
- 将
JMeterPlugins-Extras-1.4.0.zip
文件解压,找到lib/ext
文件夹里的JMeterPlugins-Extras.jar
,放到JMeter安装目录的lib/ext
目录里面。 - 同理,将
JMeterPlugins-Standard-1.4.0.zip
解压,找到lib/ext
下的JMeterPlugins-Standard.jar
,放到JMeter安装目录的lib/ext
目录里面。
完成上面步骤后,我们启动JMeter,如果已启动JMeter,需要进行重启。
执行操作:测试计划 —> 右键添加 —> 监听器,可以看到监听器中多了一些东西,看到这些jp@gc
开头的组件则表明插件已生效。
如下图所示:
(3)常用组件简要介绍
jp@gc - Bytes Throughput Over Time
:不同时间吞吐量展示(图表) 。
聚合报告里,Throughput
是按请求个数来展示的,比如说1.9/sec
,就是每秒发送1.9个请求。而这里的展示是按字节Bytes来展示的图表。jp@gc - Composite Graph
:混合图表。在它的Graphs
里面可以设置多个图表一起展示,它可以同时展示多个图表。jp@gc - Hits per Second
:每秒点击量。jp@gc - PerfMon Metrics Collector
:服务器性能监测控件,包括CPU
,Memory
,Network
,I/O
等等。jp@gc - Reponse Latencies Over Time
:记录客户端发送请求完成后,服务器端返回请求之前这段时间。jp@gc - Reponse Times Distribution
:显示测试的响应时间分布,X
轴显示由时间间隔分组的响应时间,Y
轴包含每个区间的样本数。jp@gc - Transactions per Second
:每秒事务数,服务器每秒处理的事务数。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)测试计划内包含的元件
添加元件操作步骤:
- 创建测试计划。
- 创建线程组:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
。 - 在线程组下,添加取样器“HTTP请求”组件:
选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
。 - 在线程组下,添加定时器“固定吞吐量定时器”组件:
选中“线程组”右键 —> 添加 —> 定时器 —> 固定吞吐量定时器
。
最终测试计划中的元件如下:
点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
(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
区域就能显示出对应的曲线图了。
我们需要将线程组元件的:
- 循环次数:勾选为”永远”;
- 勾选调度器:置脚本持续跑多长时间。
如下图所示:
简单说明:
- 线程数:就是并发数,目标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
选项页中的设置项
Use relative times
:使用相对时间,默认勾选,显示为从监控起一段时间内的曲线图;不勾选则显示当前系统时间内的曲线图。Auto-zoom rows for best fit
:自动缩放最佳拟合行,默认勾选,不建议取消勾选。Line width
:线条宽度,默认为1,不建议修改。Draw markers
:画标记,默认不勾选,勾选后曲线转折点被标记。Paint gradient
:颜色梯度,默认勾选。Limitnumber of points in row to [] points
:行的极限点数,默认不勾选。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.0
和Standard -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监控服务器的更多相关文章
- 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求
目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...
- 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)
目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...
- 『动善时』JMeter基础 — 2、JMeter的安装和启动
1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...
- 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置
目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...
- 『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化
目录 1.测试计划中的元件 2.数据文件内容 3.函数助手配置 (1)函数助手的打开方式 (2)函数助手界面介绍 (3)编辑后的函数助手界面 4.HTTP请求组件内容 5.线程组元件内容 6.脚本运行 ...
- 『动善时』JMeter基础 — 47、JMeter的HTTP代理服务器详细介绍
目录 1.HTTP代理服务器的添加 2.HTTP代理服务器界面详解 (1)State:状态 (2)Global Settings:全局设置 (3)Test Plan Creation:测试计划创建 ( ...
- 『动善时』JMeter基础 — 21、HTTP Cookie管理器的使用
目录 1.在HTTP信息头管理器组件中添加Cookie信息 (1)测试计划内包含的元件 (2)请求取样器内容 (3)HTTP信息头管理器内容 (4)查看结果 2.使用HTTP Cookie管理器组件来 ...
- 『动善时』JMeter基础 — 8、JMeter主要元件介绍
目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...
- 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍
目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...
随机推荐
- accessory, accident
accessory 1. belt, scarf, handbag, Penny用rhinestone做的小首饰(Penny Blossom)都是accessory2. With default se ...
- Gradle安装与配置
一.Gradle安装 1.Gradle安装 (1)先安装JDK/JRE (2)Gradle下载官网 Gradle官网 (3)解压安装包到想安装到的目录.如D:\java\gradle-5.2.1 (4 ...
- Shell变量与算术运算
区分两个 Shell Shell 语言与 Shell 解释器 Shell 语言 写 Shell 脚本使用的是 Shell 语言,Shell 既是一种命令语言,又是一种程序设计语言. 作为命令语言,它交 ...
- mybatis缓存+aop出现的问题
在对某些特殊数据进行转换时,getOne方法后执行fieleInfoHandle进行转换,如果直接使用fixedTableData进行操作,没有后续的二次调用这样是没问题的,但是在后面当执行完upda ...
- 【Java 8】 集合间转换工具——Stream.collect
集合运算 交集 (list1 + list2) List<T> intersect = list1.stream() .filter(list2::contains) .collect(C ...
- node环境变量配置
1.Node.js 官方网站下载:https://nodejs.org/en/ 2.打开安装,傻瓜式下一步即可,然后配置环境变量 3.因为在执行例如npm install webpack -g等命令全 ...
- 出现 CannotAcquireLockException 异常
项目出现 CannotAcquireLockException异常 原因: 百度了一下,是由于 Spring 事务嵌套造成死锁 结合自己的, handleWithdraw 方法底层有调用 其他 se ...
- 令无数程序员加班的 Log4j2 远程执行漏洞复现
前情提要 Apache 存在 Log4j 远程代码执行漏洞,将给相关企业带来哪些影响?还有哪些信息值得关注? 构建maven项目引入Log4j2 编写 pom 文件 <?xml version= ...
- Mongodb集群调研
目录 一.高可用集群的解决方案 二.MongoDB的高可用集群配置 三.Mongo集群实现高可用方式详解 四.Sharding分片技术 一.高可用集群的解决方案 高可用性即HA(High Availa ...
- vscode 设置
{ "security.workspace.trust.enabled": false, "workbench.editor.enablePreview": f ...