Support Tool
Support Tool 拡張機能は、スレッドダンプの収集、パフォーマンスの監視、ヒープのダンプなど、ThingWorx の診断操作に使用されます。
場所
このツールは、 support.ptc.com「ソフトウェアのダウンロード」 > 「ソフトウェアアップデートのご注文またはダウンロード」 > 「ThingWorx Foundation」 > 「Release 8.5」 > 「ThingWorx Support Tool」 > 「最新の製造コード」 > 「ThingWorx-Support-Tools--<バージョン>」から入手できます。
拡張機能の使用
拡張機能を ThingWorx に インポートすると、次のエンティティが作成されます。
SupportTools.Template - 診断サービスを含む Thing Template。
SupportTools.Entity - 診断サービスへのアクセスを提供する Support Tool の Thing インスタンス。
SupportTools.Repository - Support Tool がファイルを監視および生成するファイルリポジトリ。
拡張機能では、次の診断操作を実行するためのサービスが提供されています。
Java 仮想マシンのヒープ状態をディスクに書き込みます (ヒープダンプ)。
Java 仮想マシンのスレッド状態をディスクに書き込みます (スレッドダンプまたはスタックトレース)。
ThingWorx Composer が応答していない場合に上記のいずれかのイベントをトリガーするために使用できるウォッチドッグプロセスを、ThingWorx サーバー上に作成します。
ウォッチドッグを使用してスレッドダンプ/スタックトレースをトリガーするには:
/ThingworxStorage/repository/SupportTools.Repository ディレクトリに runstacktrace という名前の空のファイルを作成します。
このファイルが再び削除されるまで、スレッドダンプは 30 秒ごとに (デフォルト) ディスクに書き込まれます。
ウォッチドッグを使用してヒープダンプをトリガーするには:
/ThingworxStorage/repository/SupportTools.Repository ディレクトリに dumpheap という名前の空のテキストファイルを拡張子なしで作成します。
次のウォッチドッグチェックでヒープダンプが 1 回実行されます。その後、次にサーバーを再起動するまで、ヒープダンプのウォッチドッグは無効になります。
ウォッチドッグを使用してスレッドダンプ/スタックトレースを停止するには:
/ThingworxStorage/repository/SupportTools.Repository ディレクトリ内の runstacktrace という名前のファイルを削除します。
StopDiagnosticWatchdog サービスを使用します。
ヒープダンプサービス
通常、ヒープダンプは次のような場合に役立ちます。
リークが疑われるメモリの問題がある場合
サーバーが停止した場合
Java のヒープをディスクにダンプすると負荷の高い操作が行われ、完全なガベージコレクションが実行されてヒープがディスクにフラッシュされる一方、ThingWorx サーバーが応答しない状態になります。このプロセスを使用して大きな JVM ヒープを完了するには、時間がかかることがあります (10 分から 30 分)。
次のヒープダンプサービスを使用できます。
SetHeapDumpFlag - ヒープが誤ってダンプされないようにするには、ユーザーがヒープをディスクにダンプすることを確認するために、Support Tool 拡張機能で DumpHeap サービスの前に SetHeapDumpFlag サービスが実行されている必要があります。このサービスは、DumpHeap サービスを有効にする内部フラグを設定します。このフラグはサーバーの再起動時には保持されないので、ThingWorx サーバーを再起動した場合、SetHeapDumpFlag サービスを再度実行する必要があります。ClearHeapDumpFlag サービスを実行することによって、DumpHeap サービスを有効にする内部フラグを無効にすることができます。
ClearHeapDumpFlag - DumpHeap サービスを使用できるようにする内部フラグをクリアし、SetHeapDumpFlag サービスが再度実行されるまでサービスは無効になります。
DumpHeap - ヒープダンプが誤って実行中に数分間にわたってサーバーをロックすることを避けるため、このサービスは SetHeapDumpFlag サービスが実行された後でのみ実行できます。このサービスは、以下を実行するよう JVM に指示します。
現在のスレッド状態をディスクにダンプ ( /ThingworxStorage/repository/SupportTools.Repository/stacktrace に書き込み、存在する場合は追加)
現在の JVM ヒープ状態をディスクにダンプ (<Tomcat ディレクトリ>/logs/heapdump.hprof に書き込み、既存のファイルが存在する場合は上書き)
* 
設計上、ヒープダンプがリポジトリに書き込まれることはありません。ThingWorx フォルダの外で圧縮される必要があります。
スレッドダンプサービス (スタックトレース)
DumpAllThreads - JVM の現在のスレッド状態をディスクに書き込みます。デフォルトでは、スタックトレースは ThingworxStorage/repository/SupportTools.Repository/stacktrace に書き込まれます。ファイルがすでに存在する場合は、新しいスレッドダンプがファイルの末尾に追加されます。スタックトレース/スレッドダンプは以下で構成されています。
スレッドが収集されたときのタイムスタンプ。
JVM 内の各ライブスレッドの識別子、スレッド状態、スレッドコールスタック。
ウォッチドッグ操作
診断ウォッチドッグは、ThingWorx サーバーのバックグラウンドで実行され、トリガーファイルのファイルシステムを監視する小さなプロセスです。PTC テクニカルサポートによって実施される場合を除き、このプロセスを停止、開始、または調整する必要はありません。
ThingWorx を再起動すると、このプロセスが自動的に開始され、次の利点が得られます。
定期的にスレッドダンプ/スタックトレースを生成する機能。
Composer が応答しない場合、または Composer にアクセスできない場合に、スレッドダンプまたはヒープダンプをトリガーする機能。
次のウォッチドッグサービスを使用できます。
GetWatchdogInterval - ウォッチドッグチェックの現在の間隔を返します。ウォッチドッグが実行されていない場合は -1 を返します。
SetWatchdogInterval - ウォッチドッグの間隔を秒単位で新しい値に変更します。デフォルトの間隔は 30 秒です。新しい間隔は次のウォッチドッグチェックの後に有効になります。
StartDiagnosticWatchdog - 停止したときに診断ウォッチドッグスレッドを開始します。
StopDiagnosticWatchdog - 開始時に診断ウォッチドッグスレッドを停止します。