AppDynamics添加 AppDynamics 监控器若要添加 AppDynamics 监控器: - 右键点击 Load Test 选项卡的监控器节点,选择新建 Monitors。将打开新建 Monitors 对话框。
- 从新建 Monitors 对话框部署监控器类型表选择 AppDynamicsMonitor,然后点击完成。
 - 在项目配置面板右上角,点击 Properties 按钮并配置 AppDynamics 属性。

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

打开属性对话框并点击 OK 以重置监控器通道选择树。监控器通道树将根据 AppDynamics 提供的数据显示顶级应用程序节点。在点击树的扩展图标“[+]”时,子节点将根据发送给 AppDynamics 的请求动态构建。 |
监控可从 AppDynamics 监控扩展获得的数据AppDynamics Exchange 站点提供了许多监控扩展。适用于 AppDynamics 指标浏览器的监控扩展数据将在 Load Test AppDynamics 监控器中可用。 下面的截图显示了在 AppDynamics 指标浏览器视图和 Load Test AppDynamics 监控通道选择视图中,可从 Exchange 站点获得的‘静态’监控扩展所公开的数据。 AppDynamics 中的自定义 FileContentMetric:
 Load Test AppDynamics 监控器中的自定义 FileContentMetric:
 Dynatrace添加 Dynatrace 监控器若要添加 Dynatrace 监控器: - 右键点击 Load Test 选项卡的监控器节点,选择新建 Monitors。将打开新建 Monitors 对话框。
- 从新建 Monitors对话框部署监控器类型表选择 DynatraceMonitor,然后点击完成。
- 在项目配置面板右上角,点击 Properties 按钮并配置 AppDynamics 属性。

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

监控器通道选择视图树用以下方法进行构建: 您可以监控线形图类型的现有图表模板,也可以创建新的仪表板。您可以向图表模板添加多个尺寸(数据序列)。详情请参阅 Dynatrace 供应商文档。 打开属性对话框并点击 OK 以重置监控器通道选择树。监控器通道树将根据 Dynatrace 提供的数据显示顶级应用程序节点。在点击树的扩展图标“[+]”时,子节点将根据发送给 Dynatrace 的请求动态构建。 |
Dynatrace REST 请求响应大小注意事项Dynatrace REST 相应的大小可以相当大(100KB 以及更多),这取决于表和仪表板的配置。 若要最小化 Dynatrace REST 请求响应的大小: - 在 Load Test 监控的仪表板图表中,在“图表”视图右上角选择图表控制面板中的以下设置。
- Select Timeframe:设置为last 5 minutes。
 - Select Chart Resolution:设置为 10s。

- 若要将这些设置应用到仪表板中的所有图表,选择上述截图中右键点击菜单所显示的 Apply to Dashboard 命令。
- 若要评估 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 应用程序的单个线程详情。 
若要使用该监控器,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 线程监控器 - 右键点击 Load Test 选项卡中的监控器节点并选择新建 Monitors。
- 从新建 Monitors 对话框部署监控器类型表选择 JVMThreadsMonitor,然后点击完成。
- 在项目配置面板右上角,点击 Properties 按钮并配置 JVMThreadsMonitor 属性。

- 点击 OK 保存项目中的属性值。
- 若要向 JVM 线程监控器添加通道:
- 点击项目配置选项卡已部署的监控器面板中的新建按钮。将打开监控器通道选择框。
- 启动要监控的通道。通道详情适用于通道选择对话框“说明”列。

关于通道说明
TotalThreads | 过滤线程的数量。 |
---|
RunningThreads | 处于 RUNNABLE 状态的过滤线程数 |
---|
BlockedThreads | 处于 BLOCKED 状态的过滤线程数,等待输入同步语句或方法。 |
---|
ParkedThreads | 由于调用 LockSupport.park() 处于 parked 状态的过滤线程数。 |
---|
SleepingThreads | Thread.sleep() 方法中的过滤线程数。 |
---|
WaitingThreads | Object.wait() 方法中等待通知的过滤线程数。 |
---|
NewThreads | 尚未启动的线程数。 |
---|
UnknownThreads | 未知状态的线程数。 |
---|
DeadlockedThreads | 拥有一个锁的线程,尝试获取另一把锁,而该锁已被另一个线程锁住。该渠道查找同时涉及对象监控器和可拥有同步器的锁,如 java.util.concurrent.locks.ReentrantLock 和 java.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 线程监控器只转储负载测试运行时的线程。点击监控器配置视图中的发送请求将不会选择线程转储。 设置以下监控属性,以配置可选的线程转储。 
线程过滤器 | 将只转储匹配线程过滤的线程。 |
---|
线程转储方式 | 可使用以下值: - ALL:转储所有线程
- NONE or empty:不要创建线程转储
- DEADLOCKED:转储死锁的线程
- BLOCKED:转储锁住的线程
- PARKED:转储停靠的线程
如果该属性未配置(为空),将不会执行线程转储。 输入以逗号分隔的值列表,以配置多线程状态的转储:DEADLOCKED, BLOCKED, PARKED |
---|
Thread Dump Directory | 您可以在 SOAtest或 LoadTest 测试安装中输入绝对路径,或者输入以下目录的相对路径: <INSTALL_DIR>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root
如果该属性未配置(为空),将不会执行线程转储。 该设置中提供的路径将用作线程转储根源(请参阅使用监控器)。 |
---|
检查线程转储Thread Dump Directory 设置中提供的路径将用作线程转储根目录。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: 线程转储所用的系统时间。
每个线程转储文件将包含一个或多个由监控器获得的线程堆栈跟踪。线程堆栈跟踪将具有以下格式: 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 报告图中找到特定点的线程转储,请执行以下步骤: - 将鼠标悬停在 Load Test 报告图中的一个点上
- 使用提示框中的运行时间或系统时间,以查找运行时间或系统时间最近的转储文件。

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