您的位置:首页 > 运维架构

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

2021-12-31 13:38 423 查看

[toc]

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

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

  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
    :服务器性能监测控件,包括
    CPU
    Memory
    Network
    I/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.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以及最新版本。

    参考:

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: