JMeter - 监控测试计划



本章将讨论如何使用 JMeter 创建测试计划来监控 Web 服务器。监控测试的用途如下:

  • 监控对于压力测试和系统管理非常有用。

  • 与压力测试一起使用时,监控程序可提供有关服务器性能的更多信息。

  • 监控使更容易看到服务器性能与客户端响应时间之间的关系。

  • 作为系统管理工具,监控程序提供了一种简单的方法来从一个控制台监控多个服务器。

我们需要 Tomcat 5 或更高版本才能进行监控。为了测试目的,我们将监控 Tomcat 7.0.42 服务器。您可以测试任何支持 Java Management Extension (JMX) 的 Servlet 容器。让我们编写一个测试用例来监控 Tomcat 服务器。让我们首先设置我们的 Tomcat 服务器。

设置 Tomcat 服务器

我们首先打开 Tomcat 服务状态。为此,请编辑用户的配置文件,**`/conf/tomcat-users.xml`**。此文件包含一个 tomcat-users 部分(已注释),如下所示:

<tomcat-users>

<!--
   <role rolename = "tomcat"/>
   <role rolename = "role1"/>
   <user username = "tomcat" password = "tomcat" roles = "tomcat"/>
   <user username = "both" password = "tomcat" roles = "tomcat,role1"/>
   <user username = "role1" password = "tomcat" roles = "role1"/>
-->

</tomcat-users>

我们需要更改此部分以添加管理员角色 manager、manager-gui 并分配用户“admin”。修改后的文件如下:

<tomcat-users>

   <role rolename = "manager-gui"/>
   <role rolename = "manager-script"/>
   <role rolename = "manager-jmx"/>
   <role rolename = "manager-status"/>
   <user username = "admin" password = "admin" roles = "manager-gui,manager-script,manager-jmx,manager-status"/>

</tomcat-users>

现在启动 Tomcat 服务器:Linux 系统使用 `/bin/startup.sh`,Windows 系统使用 `/bin/startup.bat`。启动后,通过在浏览器中输入以下链接来检查 Tomcat 监控是否有效:

https://127.0.0.1:8080/manager/status?XML=true

浏览器中将出现一个身份验证窗口。输入相关的 Tomcat 登录名和密码(在本例中为 admin)。然后,浏览器将显示 Tomcat 的执行状态,如下所示:

Tomcat Manager Status

从上面的屏幕截图中,我们可以注意到一些事情:

  • 在 URL 中,请注意 *XML = true*(注意大小写)允许清晰地显示 JMeter 功能所需的 Tomcat 监控信息。

  • 另请注意,有两个默认连接器。AJP 连接器通常与 mod_jk Apache HTTPD 前端模块一起使用,而 HTTP 连接器是通过端口 8080 直接访问 Tomcat 的常用连接器。

编写 JMeter 测试计划

让我们通过编写测试计划来监控 Tomcat 服务器:

重命名测试计划

  • 通过点击 /home/manisha/apache-jmeter2.9/bin/jmeter.sh 打开 JMeter 窗口。

  • 点击测试计划节点。

  • 添加线程组,如下一步所述。

添加线程组

  • 右键单击 **测试计划 → 添加 → 线程(用户) → 线程组**。线程组将添加到测试计划节点下。

  • 将循环次数更改为永远(或某个较大的数字),以便生成足够的样本。

Monitor Test Users

HTTP 授权管理器

  • 通过选择添加 → 配置元件 → HTTP 授权管理器,将 HTTP 授权管理器添加到线程组元素。此元素管理浏览器查看 Tomcat 服务器状态时请求的身份验证。

  • 选择 HTTP 授权管理器。

  • 编辑以下详细信息:

    • **用户名** - admin(取决于 tomcat-users.xml 文件中的配置)

    • **密码** - admin(取决于 tomcat-users.xml 文件中的配置)

    • 其他字段留空。

HTTP Authorization Manager

添加采样器-HTTP 请求

既然我们已经定义了用户,现在是时候定义他们将执行的任务了。我们添加 HTTP 请求元素。

  • 右键单击鼠标以获取添加菜单。

  • 选择添加 → 采样器 → HTTP 请求。

  • 然后,在树中选择 HTTP 请求元素。

  • 如下面的图像所示编辑以下属性:

  • 在此元素中输入以下详细信息:

    • **名称** - 服务器状态

    • **服务器名称或 IP** - localhost

    • **端口** - 8080

    • **路径** - /manager/status

    • **参数** - 添加一个名为“XML”(大写)的请求参数。给它一个“true”(小写)的值。

    • **可选任务** - 在采样器的底部选中“用作监控”。

Monitor Test Sampler

添加恒定定时器

要定期请求服务器的状态,请添加一个恒定定时器,它允许在每个请求之间设置时间间隔。通过选择添加 → 定时器 → 恒定定时器,将定时器添加到此线程组。

在 *线程延迟* 框中输入 5000 毫秒。通常,使用小于 5 秒的时间间隔可能会增加服务器的压力。在生产环境中部署监控程序之前,请找出可接受的时间间隔。

Monitor Constant Timer

添加监听器

您需要添加到测试计划中的最后一个元素是监听器。我们添加两种类型的监听器。一个将结果存储到文件中,另一个显示结果的图形视图。

  • 选择线程组元素。

  • 添加一个简单的CSV数据写入器监听器:添加 → 监听器 → 简单数据写入器。

  • 指定输出文件的目录和文件名(在本例中为 /home/manisha/work/sample.csv)

Monitor Simple Data Writer
  • 让我们通过选择测试计划元素添加另一个监听器:添加 → 监听器 → 监控结果。

Monitor Results

运行测试计划

现在将上述测试计划保存为 *monitor_test.jmx*。使用运行 → 启动选项执行此测试计划。

查看输出

结果将保存在 /home/manisha/work/sample.csv 文件中。您还可以在监控结果监听器中看到图形结果,如下图所示。

Monitor Test Result1

Monitor Test Result2

请注意,图表两侧都有标题。左侧是百分比,右侧是活动/空闲。如果内存线快速上下波动,则可能表示内存抖动。在这种情况下,最好使用 Borland OptimizeIt 或 JProbe 对应用程序进行分析。您希望看到的是负载、内存和线程的规律模式。任何不规律的行为通常都表示性能低下或某种类型的错误。

广告