您可以创建监视器,在负载测试期间,使用它们来收集网络信息和系统性能。可以将监视度量覆盖到负载测试结果上,以帮助您确定传递给 Web 服务器的负载是否按照设计的方式处理。

在本章节中:

支持的监视器

  • SNMP
  • Windows 监视器(仅适用于在 Windows 上安装的 Load Test )
  • WebSphere
  • WebLogic
  • JBoss
  • Tomcat
  • rstat
  • remote
  • deployed (例如:AppDynamics、Dynatrace)
  • custom

Oracle Service Bus (OSB/ALSB)的性能监视器

可以使用 Oracle Service Bus (OSB/ALSB)的性能监视器有关更多详情,请联系技术支持。

添加内建的监视器

您可以添加以下内建监视器。

添加 SNMP 代理监视器

负载测试会根据提供的 OID(s) 从版本 1 和 2c 的 SNMP 代理中检索数据。

添加 SNMP 代理监视器:

  1. 右键单击 Load Test 选项卡中的 Monitors 节点,然后从快捷菜单选择 New Monitors 。将显示 New Monitors 对话框。
  2. 从 New Monitors 对话框选择 SNMP ,然后单击 Finish。将在右侧面板中打开新的监视器配置面板。
  3. 在 Host 字段键入 SNMP 代理的主机名称。
  4. 在 Community 字段键入 SNMP 代理的社区。
  5. 单击 New输入参数。将打开 New Parameter 对话框。



  6. 按照以下操作完成新的参数对话框:
    • Parameter Type: 选择 OID 或 Composite
    • Parameter: 根据所选的参数类型,参数选项将根据以下情况而有所不同:
      • OID:输入对象 Id,在 SNMP 代理社区验证特定的参数。(仅在参数类型下拉菜单中选中 OID 时可用)。
      • Composite: 选择处理器、内存、网络或 TCP 来收集相应的数据。
      • Counters: 根据 Composite parameter 下拉菜单的选项,显示 CPU 使用率(%)、内存使用率(%)和网络使用率(%);这些计数器都是通过查询一组 OIDs 来计算的。
        如果 TCP 是从 Composite parameter 下拉菜单选择的,则您必须从 Counters 框中选择计数器。
      • Parameter Explanation: 将显示所选组合模式参数的说明。
    • Graph Title: 将为图表输入标题,以对应要添加的监视器。此标题将显示在负载测试进度图和详细报告图中。
    • Apply operation: 选择将简单操作应用于 SNMP 代理返回的值。使用 "*" 代表 "乘", "/" 代表 "除以", "%” 代表 "百分率"。例如,如果代理返回以字节为单位的所分配内存值,而您希望以 KB 为单位查看它,则可以通过从下拉菜单选择“/”并在邻近的文本字段中输入“1024”,以应用“/1024”操作。然后您可以将 "Memory in kilobytes” 添加到 Graph Title 字段中。
  7. 重复以上步骤,直到参数表显示您希望该 SNMP 代理监视的所有参数。
  8. 右键单击 Load Test 树的 Monitors> SNMP 分支验证新的监视器。

添加 Windows 性能监视器

若要添加一个 Windows 性能监视器(该功能只在有一个 Windows 安装的 Load Test 时可用):

  1. 右键单击 Load Test 选项卡的 Monitors 节点,然后从快捷菜单中选择 New Monitors 。将显示 New Monitors 对话框。
  2. 从 New Monitors 对话框选择 Windows ,然后单击 Finish
  3. 在 Host 字段键入性能监视器的主机名称。
  4. 单击 New输入参数。将打开 Add performance counter 对话框。



  5. 按照以下操作完成 New Parameter 对话框:
    • 选择要监视的参数的性能计数和实例。您选择的参数的说明将在 Parameter Explanation 框中显示。
    • 在 Graph Title 字段中,为图表输入标题,以对应要添加的监视器。此标题将显示在负载测试进度图和详细报告图中。
    • 在 Apply Operation 子面板中,如果需要,选择要应用到监视器数据的操作和值。例如,通过选择 /(除以)操作并在操作值字段输入 1024 ,则您便可将原始监视值从 Byte 转换为 KBytes。
  6. 重复以上步骤,直到参数表显示您希望该性能监视器监视的所有参数。
  7. 右键单击 Load Test 树的 Monitors> Windows 分支验证新的监视器。

添加 WebSphere 监视器

添加 WebSphere 监视器之前,跳转至 WebSphere Administrative 的 Security> Global security 部分,并确保未选中 Enable administrative security 多选框。

若要添加 WebSphere 监视器:

  1. 右键单击 Load Test 选项卡的 Monitors 节点,然后从快捷菜单中选择 New Monitors 。将显示 New Monitors 对话框。
  2. 从 New Monitors 对话框选择 WebSphere ,然后单击 Finish
  3. 在项目配置面板中,单击 Configure。将显示 Configure WebSphere Agent 对话框。



  4. 请输入 Host 名称,并更改 Port 号(如果需要),然后单击 Next
  5. 在 Configure WebSphere Agent 面板中,请输入或浏览到 WebSphere 安装的正确路径。例如:C:\IBM\WebSphere.
  6. 单击 Next。Configure WebSphere Agent 对话框将显示服务器所需 Jar 文件的一个表,并指示是否找到了合适的 Jar 文件。



  7. 在 Configure WebSphere Agent 对话框中,单击 Finish。将打开 Add Parameter 对话框。



  8. 从 Add Parameter 对话框左侧 GUI 面板选择一个参数。要监视的参数的每个实例的“名称”、“说明”和“值”将显示在 Add Parameter 对话框的右侧 GUI 面板。
  9. 右侧 GUI 面板中 Select 列,选择要监视的参数实例,然后单击 OK。您选择的参数将显示在负载测试进度图和详细报告图中。

添加 WebLogic 监视器

若要添加 WebLogic 监视器:

  1. 右键单击 Load Test 选项卡的 Monitors 节点,然后从快捷菜单中选择 New Monitors 。将显示 New Monitors 对话框。
  2. 从 New Monitors 对话框选择 WebLogic  ,然后单击 Finish
  3. 在 Project Configuration 面板中,单击 Configure。将显示 Configure WebLogic Agent 对话框。


    注意

    针对 WebLogic 8.1 SP6 和 WebLogic 9.x 监视器, Load Test 需要使用 -Dsun.lang.ClassLoader.allowArraySyntax=true 选项来启动。若要在命令提示符中执行,导航到 Load Test 安装目录并运行以下操作:

    lt -Dsun.lang.ClassLoader.allowArraySyntax=true


  4. 输入 Host 名,更改 Port 号(如果需要),然后单击 Next
  5. 在 Configure WebLogic Agent 面板中,请输入或浏览到您希望在您的机器上实现 WebLogic 的正确路径。例如:C:\Oracle\Middleware\wlserver_10.3.
  6. 单击 下一步。Configure WebLogic Agent 对话框将显示服务器所需 Jar 文件的一个表,并指示是否找到了合适的 Jar 文件。
  7. 在 Configure WebLogic Agent 对话框中,单击 Finish。将打开 Add Parameter 对话框。



  8. 从 Add Parameter 对话框左侧 GUI 面板选择一个参数。要监视的参数的每个实例的“名称”、“说明”和“值”将显示在 Add Parameter 对话框的右侧 GUI 面板。
  9. 右侧 GUI 面板中 Select 列,选择要监视的参数实例,然后单击 OK。你选择的参数将显示在负载测试进度图和详细报告图中。

添加 JBoss 监视器

若要添加 JBoss 监视器:

  1. 右键单击 Load Test 选项卡的 Monitors 节点,然后从快捷菜单中选择 New Monitors 。将显示 New Monitors 对话框。
  2. 从 New Monitors 对话框选择 JBoss ,然后单击 Finish
  3. 在 Project Configuration 面板中,单击 Configure。将显示 Configure JBoss Agent 对话框。

  4. 在 Configure JBoss Agent 对话框中,输入主机名,更改端口号(如果需要),然后单击 Finish。将打开 Add Parameter 对话框。



  5. 从 Add Parameter 对话框左侧 GUI 面板选择一个参数。要监视的参数的每个实例的“名称”、“说明”和“值”将显示在 Add Parameter 对话框的右侧 GUI 面板。
  6. 右侧 GUI 面板中 Select 列,选择要监视的参数实例,然后单击 OK。你选择的参数将显示在负载测试进度图和详细报告图中。

添加 Tomcat 监视器

前提条件

若要使用该监视器,Tomcat 应该使用以下 Java 系统属性来启动:

  • -Dcom.sun.management.jmxremote
  • -Dcom.sun.management.jmxremote.port=7744
  • -Dcom.sun.management.jmxremote.ssl=false
  • -Dcom.sun.management.jmxremote.authenticate=false

使用 com.sun.management.jmxremote.port 系统属性选择的端口。

例如,如果您使用的是 Windows,则可以将以下 Java 系统属性添加到 catalina.bat Tomcat 启动脚本中。

set "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7744 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

如果 Tomcat 作为 Windows 服务安装:

  1. 那么,请启动 Tomcat9w.exe 
  2. 单击 Apache Tomcat Properties 窗口中的 Java 选项卡
  3. 将 Java 系统属性添加到“Java Options”部分。每个 Java 系统属性都必须位于新行上。

若要添加 Tomcat 监视器:

  1. 右键单击 Load Test 选项卡的 Monitors 节点,然后从快捷菜单中选择 New Monitors 。将显示 New Monitors 对话框。
  2. 从 New Monitors 对话框选择 Tomcat ,然后单击 Finish
  3. 在 Project Configuration 面板中,单击 Configure。将显示 Configure Tomcat Agent 对话框。



  4. 在 Configure Tomcat Agent 对话框中,输入主机名,更改端口号(如果需要),然后单击 Finish,将打开 Add Parameter 对话框。



  5. 从 Add Parameter 对话框左侧 GUI 面板选择一个参数。要监视的参数的每个实例的“名称”、“说明”和“值”将显示在 Add Parameter 对话框的右侧 GUI 面板。
  6. 右侧 GUI 面板中 Select 列,选择要监视的参数实例,然后单击 OK。你选择的参数将显示在负载测试进度图和详细报告图中。

添加 rstat 监视器

若要添加 rstat 监视器:

  1. 右键单击 Load Test 选项卡的 监视器 节点,然后从快捷菜单中选择 新建监视器 。将显示 New Monitors 对话框。
  2. 从 New Monitors 对话框选择 rstat ,然后单击 Finish

注意

对于要启动的 rstat 监视器, djrpc.jarrstatcl.jar 需要在 <SOAtest installation>\eclipse\plugins\com.parasoft.xtest.libs.web_<version>/root 中并将其添加到类路径。

将 rstatcl.jar 添加到在安装的  <SOAtest_Installation>\<SOAtest_Version>\eclipse\plugins\com.parasoft.xtest.libs.web_<version>\root。

必须购买 djrpc.jar 并将其复制到 <SOAtest installation>\eclipse\plugins\com.parasoft.xtest.libs.web_<version>/root。

添加远程 JVM 监视器

注意

若要使用该监视器,JVM 应该使用以下 Java 系统属性来启动:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=7744
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

使用 com.sun.management.jmxremote.port 系统 属性选择的端口。

若要添加远程 JVM 监视器:

  1. 右键单击 Load Tests 选项卡并选择 Monitors 节点,然后从快捷菜单选择 New Monitors 。将显示 New Monitors 对话框。
  2. 从 New Monitors 对话框选择 Remote JVM ,然后单击 Finish
  3. 在 Project Configuration 面板中,单击 Configure。将显示 Configure Remote JVM Agent 对话框。



  4. 在 Configure Remote JVM Agent 对话框中,输入主机名,更改端口号(如果需要),然后单击 Finish 按钮。将打开 Add Parameter 对话框。



  5. 从 Add Parameter 对话框左侧 GUI 面板选择一个参数。要监视的参数的每个实例的“名称”、“说明”和“值”将显示在 Add Parameter 对话框的右侧 GUI 面板。
  6. 右侧 GUI 面板中 Select 列,选择要监视的参数实例,然后单击 OK。你选择的参数将显示在负载测试进度图和详细报告图中。

添加自定义监视器

自定义监视器可通过 JavaScript、Jython 脚本或 Java 类方法来实现。如果希望从上述未列出的源中收集数据,这一点尤其有用。

注意

渠道方法必须返回 java.lang.Number 类型,以便在负载测试过程和详细报告中绘制图表。

若要添加自定义监视器:

  1. 右键单击负载测试选项卡的 监视器 节点,然后从快捷菜单中选择 新建监视器 。将显示 New Monitors 对话框。
  2. 从 New Monitors 对话框选择 Custom ,然后单击 Finish
  3.  Name 字段中输入自定义监视器的名称。
  4. 单击 New 按钮。将打开一个 Add Channel 对话框。



  5. 在 Channel ID 字段中输入通道名称。为自定义监视器输入的名称与通道 ID 一起组成了监视器的标题。此标题将显示在负载测试进度图和详细报告图中。
  6. (可选项)在 Description 字段中输入对渠道的简单说明。
  7. 从 Language 菜单选择一种语言。
  8. 进行以下步骤之一指定脚本:
    • 选择 File 单选框并单击 Browse 按钮,以选择合适的文件。
    • 选择 Text 单选框并在文本字段中输入脚本。
  9. 指定您希望从 Method 菜单调用的方法。
  10. 单击 OK。新的自定义通道被添加到右侧 GUI 面板的“通道”表中。

更改内建的监视器

监视器创建后,您可以为以下内置的监视器类型设置或修改应用操作参数。

  • Windows
  • JBoss
  • Tomcat
  • Remote JVM
  • SNMP

若要更改操作,双击 Parameters 面板的监视器配置视图中的监视器渠道,并设置合适的操作类型和值。

添加已部署的监视器

Load Test 工具允许动态添加监视器类型到 Load Test 安装。已部署的监视器显示在 Performance Monitors 向导的已部署的监视器类型表中。

AppDynamics

添加 AppDynamics 监视器

若要添加 AppDynamics 监视器:

  1. 右键单击负载测试选项卡的 监视器 节点,然后从快捷菜单中选择 新建监视器 。将显示 New Monitors 对话框。
  2. 从 New Monitors 对话框已部署的监视器类型表选择 AppDynamicsMonitor ,然后单击 Finish



  3. 在项目配置面板的右上角中,单击 Properties 按钮并配置 AppDynamics 属性。



    • Host – 安装 AppDynamics 服务器的主机。
    • Port – AppDynamics 监听 REST 的端口调用。
    • User Name – REST 的用户名调用身份验证。
    • Password – REST 的密码调用身份验证。
    • Query Interval (Minutes) – 以分钟为单位的时间,其中监视器值取平均值。最小值为 1 分钟。
  4. 单击 OK 保存项目中的属性值。
  5. 若要向 AppDynamics 监视器添加渠道:
    1. 单击 New 按钮,该按钮在项目配置选项卡的 Deployed monitor 面板中。将显示一个监视器通道选择框。监视渠道树中的顶级节点是 AppDynamics 监视的应用程序。
    2. 扩展顶级应用程序节点,直到使用复选框到达通道叶节点为止。
    3. 确保希望监视的项目被选中。
    4. 单击 OK 将所选节点添加到已部署的监视器配置面板的参数表。您选择的参数将显示在负载测试进度图和详细报告图中。

提示

打开 Properties 对话框,并单击 OK 按钮以重置监视器通道选择树。监视器通道树将根据 AppDynamics 提供的数据显示顶级应用程序节点。在单击树的扩展图标 “[+]” 时,子节点将根据发送给 AppDynamics 的请求动态构建。

监视可从 AppDynamics 监视扩展获得的数据

AppDynamics Exchange 站点提供了许多监视扩展。适用于 AppDynamics 度量浏览器的监视扩展数据将在 Load Test AppDynamics 监视器中可用。

下面的截图显示了在 AppDynamics 度量浏览器视图和 Load Test AppDynamics 监视通道选择视图中,可从 Exchange 站点获得的 ‘Static’监视扩展所公开的数据。

AppDynamics 中的自定义 FileContentMetric :



Load Test AppDynamics 监视器中的自定义 FileContentMetric:

Dynatrace

添加 Dynatrace 监视器

若要添加 Dynatrace 监视器:

  1. 右键单击负载测试选项卡的 监视器 节点,然后从快捷菜单中选择 新建监视器 。将显示 New Monitors 对话框。
  2. 从New Monitors对话框已部署的监视器类型表选择 DynatraceMonitor ,然后单击 Finish
  3. 在项目配置面板的右上角中,单击 Properties 按钮并配置 Dynatrace 属性。



    • Host – 安装 Dynatrace 服务器的主机。
    • Port - Dynatrace 监听 REST 调用的端口。默认端口为 8020。有关更多详情,请参考 Dynatrace 文档。
    • User Name - REST 调用身份验证的用户名。
    • Password - REST 调用身份验证的密码。
  4. 单击 OK 保存项目中的属性值。
  5. 若要向 Dynatrace 监视器添加渠道:
    1. 单击 新建 按钮,该按钮在项目配置选项卡的 已部署的监视器 面板中。将显示一个监视器通道选择框。
    2. 扩展顶级应用程序节点,直到使用复选框到达通道叶节点为止。
    3. 确保希望监视的项目被选中。
    4. 单击 OK 将所选节点添加到已部署的监视器配置面板的参数表。你选择的参数将显示在负载测试进度图和详细报告图中。

监视器通道选择视图树用以下方法进行构建:

  • 级别 1:Dynatrace 仪表板
    • 级别 2:仪表板中的图表模板
      • 级别 3:图表模板中的尺寸
        • 级别 4:尺寸的最小值、最大值、平均值

您可以监视线形图类型的现有图表模板,也可以创建新的仪表板。您可以向图表模板添加多个尺寸(数据序列)。有关更多详情,请查阅 Dynatrace 供应商文档。

提示

打开 Properties 对话框,并单击 OK 按钮以重置监视器通道选择树。监视器通道树将根据 Dynatrace 提供的数据显示顶级应用程序节点。在单击树的扩展图标 “[+]” 时,子节点将根据发送给 Dynatrace 的请求动态构建。

Dynatrace REST 请求响应大小注意事项

Dynatrace REST 相应的大小可以相当大(100KB 以及更多),这取决于表和仪表板的配置。

若要最小化 Dynatrace REST 请求响应的大小:

  1. 在 Load Test 监视的仪表板图表中,在“图表”视图右上角选择图表控制面板中的以下设置:
    • Select Timeframe:设置为‘last 5 minutes’。



    • Select Chart Resolution: 设置为‘10s’。



  2. 若要将这些设置应用到仪表板中的所有图表,选择上述截图中右键单击菜单所显示的 Apply to Dashboard 命令。
  3. 若要评估 Load Test Dynatrace 监视器使用的仪表板上 REST 请求的响应大小,使用以下 URL 模板(将主机、端口和仪表板名称替换为与您的环境关联的参数值后)在浏览器中打开请求结果: http://dynatrace.parasoft.com:8020/rest/management/dashboard/your_dashboard_name

监视 Dynatrace 插件可获得的数据

Dynatrace‘插件中心’站点和‘社区插件和扩展’站点包含插件数量,大多数用于开箱即用的 Dynatrace 监视功能。Dynatrace 插件数据作为尺寸添加到图表模板将在 Load Test Dynatrace 监视器中可用。

下面的截图显示了 StockQuote 示例监视器插件,它可从‘社区插件和扩展’站点获得,该插件是在 Dynatrace 图表模板和 Load Test Dynatrace 监视器渠道选择视图中作为度量添加的。

自定义 Dynatrace 中的 StockQuote 度量:



自定义 Load Test Dynatrace 监视器中的 StockQuote 渠道:

JVM 线程

添加远程 JVM 线程监视器

JVM 线程监视器允许您观察线程数据,并使用 Java JMX 技术记录远程 Java 应用程序的单个线程详情。 

启动 JMX 监视

若要使用该监视器,JVM 应该使用以下 Java 系统属性来启动 JMX 监视器:

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=7744 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false

使用 com.sun.management.jmxremote.port 系统属性选择的端口。

若要添加远程 JVM 线程监视器

  1. 右键单击 Load Test 选项卡中的 监视器 节点,然后从快捷菜单选择 新建监视器 。
  2. 从 New Monitors 对话框已部署的监视器类型表选择 JVMThreadsMonitor ,然后单击 Finish
  3.  在项目配置面板的右上角中,单击 Properties 按钮并配置 JVMThreadsMonitor 属性。



    • Host: 运行 JVM 的主机名。
    • Port: JVM 的 JMX 端口(请查阅 启动 JVX 监视)。
    • Thread Filter: 逗号分隔的字符串列表。如果线程名称包含列表中的任何字符串,线程都将被监视器处理。线程名称匹配不区分大小写。(监视器接收来自远程 JVM 进程的所有可用线程数据后,应用该过滤器)。
    • Thread Dump Mode: 逗号分隔的要转储的线程状态的列表,以供进一步分析。有关详细说明,请查阅 Taking Selective Thread Dumps
    • Thread Dump Directory: 线程应转储的目录路径。查阅 Taking Selective Thread Dumps 已获得详细说明。

      JVM 线程监视器可能会影响被测应用程序的性能(AUT)。

      与添加 JVM 线程监视器联系的性能影响可与使用 jvisualvm Java 性能诊断和监视工具相媲美。大多数情况下应忽略该影响,而我们建议在将 JVM 线程监视器应用于 Load Test 项目之前以及之后,通过比较 AUT 关键的性能指示器(如,CPU 利用率、平均响应时间和最大响应时间等)对其进行评估。

  4. 单击 OK 保存项目中的属性值。
  5. 若要向 JVM 线程监视器添加通道:
    1. 单击项目配置选项卡已部署的监视器面板中的 New 按钮。将显示一个监视器通道选择框。
    2. 启动要监视的通道:通道详情适用于通道选择对话框“说明”列。

关于通道说明

TotalThreads过滤线程的数量
RunningThreads处于 RUNNABLE 状态的过滤线程数
BlockedThreads处于 BLOCKED 状态的过滤线程数,等待输入同步语句或方法。
ParkedThreads由于调用 LockSupport.park() 处于 parked 状态的过滤线程数。
SleepingThreadsThread.sleep() 方法中的过滤线程数。
WaitingThreadsObject.wait() 方法中等待通知的过滤线程数。
NewThreads尚未启动的线程数。
UnknownThreads未知状态的线程数。
DeadlockedThreads拥有一个锁的线程,尝试获取另一把锁,而该锁已被另一个线程锁住。该渠道查找同时涉及对象监视器和可拥有同步器的锁,如 java.util.concurrent.locks.ReentrantLockjava.util.concurrent.locks.ReentrantReadWriteLock
MonitorDeadlockedThreads拥有一个同步监视器的线程,尝试获取另一个监视器,而该监视器已被另一个线程持有。该方法查找只涉及对象监视器的死锁。
BlockedTime在 Load Test 数据收集间隔期间,处于 BLOCKED 状态的过滤线程的大约时间(以毫秒为单位)。
BlockedRatio处于 BLOCKED 状态的过滤线程的大约比率(以百分比衡量)。
BlockedCount处于 BLOCKED 状态的过滤线程的出现次数。
WaitedTime处于 WAITING 或 TIMED_WAITING 状态的过滤线程的大约时间(以毫秒为单位)。
WaitedRatio处于 WAITING 或 TIMED_WAITING 状态的过滤线程的大约比率(以百分比衡量)。
WaitedCount处于 WAITING 或 TIMED_WAITING 状态的过滤线程的出现次数。

监视器渠道返回的所有数据都与最近 Load Test 数据收集间隔相关。

NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED 都是状态表示,来自 State 枚举,其源于 java.lang.Thread 类中。

有关 JVM 线程状态的更多详情,请查阅相关 Java 类的 Java 文档:

初始化之后,JMX 线程监视器将检查远程 JVM 上是否启用了线程争用监视。如果禁用争用监视,JMX 线程监视器将尝试启用它。如果尝试失败,BlockedTime、BlockedRatio、WaitedTime 和 WaitedRatio 通道将返回零值。

选择线程转储

JMX 线程监视器允许您选择远程应用程序线程的转储方式并将其保存在磁盘中,以供进一步分析。该功能有助于捕获自动负载测试运行期间偶尔出现的不需要的线程状态,或者记录线程状态。

JMX 线程监视器只转储负载测试运行时的线程。单击监视器配置视图中的 Send Request 将不会选择线程转储。

设置以下监视属性,以配置可选的线程转储。

线程过滤

将只转储匹配线程过滤的线程。

线程转储方式

可使用以下值:

  • ALL:转储所有线程。
  • NONE or empty:不要创建线程转储
  • DEADLOCKED: 转储死锁的线程。
  • BLOCKED: 转储锁住的线程。
  • PARKED: 转储停靠的线程。

如果该属性未配置(为空),将不会执行线程转储。

输入以逗号分隔的值列表,以配置多线程状态的转储:DEADLOCKED, BLOCKED, PARKED

Thread Dump Directory

您可以在 SOAtest或 LoadTest 测试安装中输入绝对路径,或者输入以下目录的相对路径:

${SOATEST_INSTALL_DIR}\eclipse\plugins\com.parasoft.xtest.libs.web_version\root

如果该属性未配置(为空),将不会执行线程转储。

该设置中提供的路径将用作线程转储根源(请查阅 Examining Thread Dumps)。

Examining Thread Dumps

线程转储目录设置中提供的路径将用作线程转储根目录。JVM 线程监视器将为每次负载测试运行,在线程转储根目录下创建一个单独的项目线程转储目录。这些项目线程转储目录将有以下命名模式:PROJECTNAME_YYYY-MM-DD_hh-mm-ss.

  • PROJECTNAME:LoadTest 的项目名。
  • YYYY:当前年份
  • MM:当前月份
  • DD:当前日期
  • hh:小时,以 24 小时计
  • mm:分钟
  • ss:秒

该格式使您能够清楚地看到线程转储与哪个 Load Test 项目相关,以及它是何时创建的。如果监视器在负载测试期间没有找到与线程转储配置相匹配的要转储的线程,则将不会创建 PROJECTNAME_YYYY-MM-DD_hh-mm-ss 目录。

监视器将在项目线程转储目录中创建具有以下命名模式的线程转储文件:S..S_hh-mm-ss.txt

  • S..S: 负载测试运行开始线程转储所用的运行时间,以秒为单位。
  • hh-mm-ss: 线程转储所用的系统时间。
    • hh:小时,以 24 小时计
    • mm:分钟
    • ss:秒

每个线程转储文件将包含一个或多个由监视器获得的线程堆栈跟踪。线程堆栈跟踪将具有以下格式:

THREAD_STATE thread: THREAD_NAME
      thread_stack_entries

每个 BLOCKED 线程后面都跟着一个正在阻塞它的线程的堆栈跟踪。BLOCKED 线程输出将具有以下格式:

THREAD_STATE thread: THREAD_NAME
      thread_stack_entries
      ------------------
      Blocked by:      
      BLOCKING_THREAD_STATE thread: THREAD_NAME
            blocking_thread_stack_entries

例如:

BLOCKED thread: Clinet Rec: LTPub_0.4104694862292172
    com.acme.connections.ClientComms.isDisconnecting:561
    ...
    java.util.concurrent.ThreadPoolExecutor$Worker.run:617
    java.lang.Thread.run:745
    ------------------
    Blocked by:
    PARKED thread: acme_pool-2-UserCodeRunnable-135
        sun.misc.Unsafe.park:-2
        java.util.concurrent.locks.LockSupport.parkNanos:215
        java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos:2078
        java.util.concurrent.ThreadPoolExecutor.awaitTermination:1465
        ...

将线程转储与 Load Test 报告中的图表点进行匹配

若要在 Load Test 报告图中找到特定点的线程转储,请执行以下步骤:

  1. 将鼠标悬停在 Load Test 报告图中的一个点上
  2. 使用提示框中的运行时间或系统时间,以查找运行时间或系统时间最近的转储文件。


例如,3_10-37-37.txt 文件将是截图中突出显示的图表点的线程转储文件。

查询监视器

将某些参数添加到监视器后,可以对其进行查询。

若要发送查询:

  1. 选择 Load Test 树节点,该节点代表您希望查询的监视器。
  2. 单击监视器配置面板的响应视图区域中的 Send Request 按钮。

查询结果将显示在监视器配置面板的响应视图区域中。

验证监视器状态

Load Test 树使用彩色气泡表示每个监视器的状态。可使用以下颜色:

  • White:表示未检查的。
  • Green:表示参数可用。
  • Yellow:表示一些参数要么不可用,要么就是其值不是数值。
  • Red:表示监视器不可用或不可访问。

若要验证一个或多个监视器的当前状态:

  1. 右键单击 Load Test 树节点,该节点代表您希望监视器验证( Monitors 节点、 Windows 节点、 SNMP 节点、 Custom 节点或代表单独监视器的节点。
  2. 从快捷菜单中选择 Verify

监视测试套件负载测试期间的行为

您添加到 Load Test 树的监视器将在测试套件负载测试期间使用。

负载测试期间使用监视器,Load Test 将为负载测试进程面板图标选项卡中的每个监视器添加一栏。图表选项卡将显示监视器收集的数据。这些栏的的名称都是基于监视器的图表标题值,而不是 OID 数或参数 ID。

访问监视结果

负载测试期间监视器收集到的数据被保存在详细报告中,可以与默认数据(如“虚拟用户数”,等)一起查看并与之关联。

  • No labels