支援工具
支援工具延伸功能用於 ThingWorx 中的診斷操作,例如收集執行緒傾印、監視效能和傾印堆集。
位置
您可在以下位置找到此工具: support.ptc.com「下載軟體」>「訂購或下載軟體更新」」> ThingWorx Foundation >「8.5 發行版本」>「ThingWorx 支援工具」>「最新日期代碼」> ThingWorx-Support-Tools--<版本> 下。
使用此延伸功能
將延伸功能匯入 ThingWorx 之後,會建立下列實體:
SupportTools.Template - 包含診斷服務的物範本。
SupportTools.Entity - 提供診斷服務存取權之支援工具的物件實例。
SupportTools.Repository - 支援工具監視及產生檔案的檔案存放庫。
延伸功能會提供服務以允許下列診斷操作:
將 Java 虛擬機器的堆集狀態寫入磁片 (堆集傾印)
將 Java 虛擬機器的執行緒狀態寫入磁片 (執行緒堆集或堆疊追蹤)
在 ThingWorx 伺服器上建立看門狗流程,以在 ThingWorx Composer 不回應的情況下用來觸發上述事件之一。
欲使用看門狗觸發執行緒堆集 / 堆疊追蹤:
/ThingworxStorage/repository/SupportTools.Repository 目錄中建立名為 runstacktrace 的空檔案
執行緒堆集將會以每 30 秒一次的間隔 (依預設) 繼續寫入磁碟,直到再次刪除此檔案為止。
欲使用看門狗觸發堆集傾印:
/ThingworxStorage/repository/SupportTools.Repository 目錄中建立名為 dumpheap 的無副檔名空文字檔。
堆集傾印將會在下一次看門狗檢查時發生一次。然後會禁用堆集傾印看門狗,直到下次重新啟動伺服器為止。
欲使用看門狗停止執行緒堆集 / 堆疊追蹤:
刪除 /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 資料夾之外壓縮。
執行緒傾印服務 (堆節追蹤)
DumpAllThreads - 將 JVM 的目前執行緒狀態寫入磁碟。依預設,堆疊追蹤會寫入至 /ThingworxStorage/repository/SupportTools.Repository/stacktrace 。如果檔案已存在,則會將新的執行緒傾印附加至檔案的結尾。堆疊追蹤/執行緒傾印包含以下項目:
收集執行緒時的時間戳記。
JVM 中每個有效存留執行緒的識別元、執行緒狀態和執行緒呼叫堆疊。
看門狗操作
Diagnostic Watchdog 是在 ThingWorx 伺服器的背景中執行的小程序,可監視觸發程式檔案的檔案系統。除非 PTC 技術支援建議,否則不需要停止、啟動或調整此程序。
此程序會在重新啟動 ThingWorx 時自動啟動,並提供下列優點:
能夠定期自動產生執行緒傾印/堆疊追蹤。
當 Composer 無回應或無法存取時,能夠觸發執行緒傾印或堆積傾印。
以下是可用的看門狗服務:
GetWatchdogInterval - 傳回目前看門狗每次檢查之間的間隔,如果看門狗未在執行中則傳回 -1。
SetWatchdogInterval - 將看門狗間隔變更為以秒為單位的新值。預設間隔為 30 秒。新的間隔將在看門狗下一次檢查之後生效。
StartDiagnosticWatchdog - 停止時啟動 Diagnostic Watchdog 執行緒。
StopDiagnosticWatchdog - 啟動時停止 Diagnostic Watchdog 執行緒。