ThingWorx 扩展性 > 扩展 > 支持工具
支持工具
“支持工具”扩展可用于 ThingWorx 中的诊断操作,例如收集线程转储、监控性能以及转储堆。
位置
此工具可从 support.ptc.com 中的以下位置获取:“下载软件”>“订购或下载软件更新”> ThingWorx Foundation > Release 8.5 > ThingWorx Support Tool >“最近的日期代码”> ThingWorx-Support-Tools--<版本>
使用此扩展
将扩展 导入 ThingWorx 后,将创建以下实体:
SupportTools.Template - 包含诊断服务的事物模板。
SupportTools.Entity - 提供诊断服务访问权限的支持工具事物实例。
SupportTools.Repository - 支持工具从中监控和生成文件的文件信息库。
该扩展提供了允许以下诊断操作的服务:
将 Java 虚拟机的堆状态写入磁盘 (堆转储)
将 Java 虚拟机的线程状态写入磁盘 (线程转储或 Stacktrace)
在 ThingWorx Composer 未响应的情况下,于 ThingWorx 服务器上创建一个可用于触发上述任一事件的监测程序进程。
要使用监测程序触发线程转储/stacktrace:
/ThingworxStorage/repository/SupportTools.Repository 目录中创建名为 runstacktrace 的空文件
线程转储将继续以每 30 秒一次的频率写入磁盘 (默认设置),直至再次删除此文件。
要使用监测程序触发堆转储:
/ThingworxStorage/repository/SupportTools.Repository 目录中创建一个名为 dumpheap 且无扩展名的空文本文件。
堆转储将在下次监测程序检查时触发一次。随后将禁用堆转储监测程序,直至下次重新启动服务器。
要使用监测程序停止线程转储/stacktrace:
/ThingworxStorage/repository/SupportTools.Repository 目录中删除名为 runstacktrace 的文件。
使用 StopDiagnosticWatchdog 服务。
堆转储服务
堆转储通常可用于以下情况:
疑似存在泄漏的内存问题
挂起的服务器
将 Java 堆转储至磁盘是一项开销极大的操作,且在完成整个垃圾收集操作并将堆刷新至磁盘时,会将 ThingWorx 服务器置于无响应状态。对于较大的 JVM 堆,此过程可能需要很长时间才能完成 (10-30 分钟)。
以下为可用的堆转储服务:
SetHeapDumpFlag - 为防止意外发生堆转储,“支持工具”扩展要求在 DumpHeap 服务之前执行 SetHeapDumpFlag 服务,以验证用户是否希望将堆转储至磁盘。此服务设置了一个启用 DumpHeap 服务的内部标志。该标志在服务器重新启动期间不续存,因此,如果重新启动 ThingWorx 服务器,则必须再次执行 SetHeapDumpFlag 服务。可通过运行 ClearHeapDumpFlag 服务来禁用启用 DumpHeap 服务的内部标志。
ClearHeapDumpFlag - 清除允许使用 DumpHeap 服务的内部标志,进而于 SetHeapDumpFlag 服务再次运行前禁用该服务。
DumpHeap - 为防止意外发生在运行期间可能会导致服务器锁定若干分钟的堆转储,只能在 SetHeapDumpFlag 服务执行完毕后再执行此服务。此服务会指示 JVM 执行以下操作:
将当前线程状态转储至磁盘 (写入 /ThingworxStorage/repository/SupportTools.Repository/stacktrace,若存在则附加)
将当前 JVM 堆状态转储至磁盘 (写入 <TomcatDirectory>/logs/heapdump.hprof,并覆盖现有文件 (若存在))
* 
堆转储不会被写出至信息库。其必须在 ThingWorx 文件夹的外部进行压缩。
线程转储服务 (Stacktrace)
DumpAllThreads - 将 JVM 的当前线程状态写入磁盘。默认情况下,stacktrace 会被写入 /ThingworxStorage/repository/SupportTools.Repository/stacktrace。如果文件已存在,则新线程转储将被附加至文件结尾。stacktrace/线程转储由以下内容组成:
收集线程的时间戳。
JVM 中每个活动线程的标识符、线程状态和线程调用堆栈。
监测程序操作
诊断监测程序是一个在 ThingWorx 服务器后台运行的小进程,可用于监测文件系统中的触发器文件。无需停止、启动或调整此进程,除非 PTC 技术支持部门建议执行此操作。
ThingWorx 重新启动后,此进程会自动启动且具有以下优点:
可定期自动生成线程转储/stacktrace。
可在 Composer 无响应或无法访问时触发线程转储或堆转储。
以下为可用监测程序服务:
GetWatchdogInterval - 返回各监测程序检查间的当前间隔,若监测程序未运行,则为 -1。
SetWatchdogInterval - 将监测程序间隔更改为以秒为单位的新值。默认间隔为 30 秒。新的间隔将在下次监测程序检查后生效。
StartDiagnosticWatchdog - 停止后启动诊断监测程序线程。
StopDiagnosticWatchdog - 启动后停止诊断监测程序线程。