飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • AngularJS教程
  • UEditor使用文档
  • ThinkPHP5.0教程

『动善时』JMeter基础 — 61、使用JMeter监控服务器

时间:2022-01-01  作者:liuyuelinfighting  

目录
  • 1、监控插件安装
  • 2、启动监控服务
  • 3、使用JMeter监控服务器
    • (1)测试计划内包含的元件
    • (2)HTTP请求界面内容
    • (3)配置jp@gc-PerfMon Metrics Collector组件
    • (4)线程组元件配置
    • (5)查看监控结果
  • 4、遇到的问题

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

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

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

1、监控插件安装

(1)需要安装的插件

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

  1. JmeterPlugins-域名
  2. JmeterPlugins-域名
  3. ServerAgent-2.域名

提示:

JMeter插件下载地址:https://jmeter-域名/downloads/old

  • JmeterPlugins-域名JmeterPlugins-域名都可以通过上面链接下载。
  • ServerAgent-2.域名,需要通过其他途径下载。

(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.域名文件解压,找到lib/ext文件夹里的JMeterPlugins-域名,放到JMeter安装目录的lib/ext目录里面。
  2. 同理,将JMeterPlugins-Standard-1.域名解压,找到lib/ext下的JMeterPlugins-域名,放到JMeter安装目录的lib/ext目录里面。

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

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

如下图所示:

image

(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\域名,来启动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 域名
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 域名
-rw-r--r--. 1 root root    63 6月   8 11:20 域名
-rw-r--r--. 1 root root    74 6月   8 11:20 域名

# 2.赋予域名文件执行权限
[root@localhost ServerAgent-2.2.1]# chmod +x 域名
[root@localhost ServerAgent-2.2.1]# ll
总用量 172
-rw-r--r--. 1 root root 10821 6月   8 11:20 域名
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 域名
-rw-r--r--. 1 root root    63 6月   8 11:20 域名
-rwxr-xr-x. 1 root root    74 6月   8 11:20 域名

# 3.启动startAgent服务
[root@localhost ServerAgent-2.2.1]# ./域名
INFO    2021-06-08 11:21:域名 [域名.p] (): Binding UDP to 4444
INFO    2021-06-08 11:21:域名 [域名.p] (): Binding TCP to 4444
INFO    2021-06-08 11:21:域名 [域名.p] (): JP@GC Agent v2.2.0 started

提示:

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

(2)在Windows系统中

在Windows服务器中启动域名文件即可。

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

如下图所示:

image

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

(3)JMeter相关配置

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

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

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

(4)总结

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

ServerAgent相当于是服务端。

3、使用JMeter监控服务器

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

添加元件操作步骤

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

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

image

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

(2)HTTP请求界面内容

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

编写内容如下图:

image

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

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

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

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

如下图所示:

image

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. 勾选调度器:置脚本持续跑多长时间。

如下图所示:

image

简单说明:

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

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

(5)查看监控结果

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

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

image

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

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

说明:

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

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

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

如下图所示:

image

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脚本的时候,出现域名chMethodError: 域名域名域名ormatter(Ljava/text/DateFormat;)V报错。

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

2021-06-08 00:11:48,093 INFO o.a.域名dardJMeterEngine: Running the test!
2021-06-08 00:11:48,093 INFO o.a.域名leEvent: List of sample_variables: []
2021-06-08 00:11:48,095 ERROR o.域名er: Uncaught exception: 
域名chMethodError: 域名域名域名ormatter(Ljava/text/DateFormat;)V
	at 域名域名stCSVSetup(域名:272) ~[JMeterPlugins-域名:?]
	at 域名域名域名pSaving(域名:140) ~[JMeterPlugins-域名:?]
	at 域名域名域名Started(域名:117) ~[JMeterPlugins-域名:?]
	at 域名域名域名Started(域名:350) ~[域名:5.0 r1840935]
	at 域名域名域名Started(域名:28) ~[JMeterPlugins-域名:?]
	at 域名域名域名fyTestListenersOfStart(域名:215) ~[域名:5.0 r1840935]
	at 域名域名域名(域名:384) ~[域名:5.0 r1840935]
	at 域名域名(域名:748) [?:域名4]

原因

是因为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插件为域名sion,解决了JMeter版本过高,导致监控插件不兼容的问题。

如下图所示:

image

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

参考:

  • https://域名/p/791e4bae2f1d
  • https://域名/SunshineKimi/p/域名

标签:编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。