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

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

- Host – 安装 AppDynamics 服务器的主机。
- Port – AppDynamics 监听 REST 的端口调用。
- User Name – REST 的用户名调用身份验证。
- Password – REST 的密码调用身份验证。
- Query Interval (Minutes) – 以分钟为单位的时间,其中监视器值取平均值。最小值为 1 分钟。
- 单击 OK 保存项目中的属性值。
- 若要向 AppDynamics 监视器添加渠道:
- 单击 New 按钮,该按钮在项目配置选项卡的 Deployed monitor 面板中。将显示一个监视器通道选择框。监视渠道树中的顶级节点是 AppDynamics 监视的应用程序。
- 扩展顶级应用程序节点,直到使用复选框到达通道叶节点为止。
- 确保希望监视的项目被选中。
- 单击 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 监视器: - 右键单击负载测试选项卡的 监视器 节点,然后从快捷菜单中选择 新建监视器 。将显示 New Monitors 对话框。
- 从New Monitors对话框已部署的监视器类型表选择 DynatraceMonitor ,然后单击 Finish。
- 在项目配置面板的右上角中,单击 Properties 按钮并配置 Dynatrace 属性。

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

监视器通道选择视图树用以下方法进行构建: 您可以监视线形图类型的现有图表模板,也可以创建新的仪表板。您可以向图表模板添加多个尺寸(数据序列)。有关更多详情,请查阅 Dynatrace 供应商文档。 打开 Properties 对话框,并单击 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 选项卡中的 监视器 节点,然后从快捷菜单选择 新建监视器 。
- 从 New Monitors 对话框已部署的监视器类型表选择 JVMThreadsMonitor ,然后单击 Finish。
- 在项目配置面板的右上角中,单击 Properties 按钮并配置 JVMThreadsMonitor 属性。

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

关于通道说明
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 线程监视器只转储负载测试运行时的线程。单击监视器配置视图中的 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: 线程转储所用的系统时间。
每个线程转储文件将包含一个或多个由监视器获得的线程堆栈跟踪。线程堆栈跟踪将具有以下格式: 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 文件将是截图中突出显示的图表点的线程转储文件。 |