Support Tool
L'estensione Support Tool viene utilizzata per le operazioni di diagnostica in ThingWorx, ad esempio la raccolta di dump dei thread, il monitoraggio delle prestazioni e il dump dell'heap.
Ubicazione
Questo strumento è disponibile sul sito support.ptc.com in Scarica il software > Order or Download Software Updates > ThingWorx Foundation > Release 8.5 > ThingWorx Support Tool > Most Recent Datecode > ThingWorx-Support-Tools--<versione>.
Utilizzo dell'estensione
Dopo aver importato l'estensione in ThingWorx, vengono create le seguenti entità:
SupportTools.Template - Modello di oggetto che contiene servizi di diagnostica.
SupportTools.Entity - Istanza di oggetto di Support Tool che consente di accedere ai servizi di diagnostica.
SupportTools.Repository - Repository di file in cui Support Tool monitora e genera file.
L'estensione fornisce servizi che consentono di eseguire le operazioni di diagnostica seguenti:
Scrittura dello stato dell'heap di Java Virtual Machine su disco (dump dell'heap)
Scrittura dello stato dei thread di Java Virtual Machine su disco (dump dei thread o analisi dello stack)
Creazione di un processo watchdog nel server ThingWorx che può essere utilizzato per attivare uno degli eventi precedenti nelle situazioni in cui ThingWorx Composer non risponda.
Per attivare un dump dei thread/un'analisi dello stack tramite watchdog:
Creare un file vuoto denominato runstacktrace nella directory /ThingworxStorage/repository/SupportTools.Repository
I dump dei thread continueranno a essere scritti su disco ogni 30 secondi (per default) fino a quando il file non viene eliminato di nuovo.
Per attivare un dump dell'heap tramite watchdog:
Creare un file di testo vuoto senza estensione denominato dumpheap nella directory /ThingworxStorage/repository/SupportTools.Repository.
Il dump dell'heap si verificherà una volta nel controllo watchdog successivo. Il watchdog di dump dell'heap viene quindi disattivato fino al riavvio successivo del server.
Per arrestare un dump dei thread/un'analisi dello stack tramite watchdog:
Eliminare il file denominato runstacktrace nella directory /ThingworxStorage/repository/SupportTools.Repository
Utilizzare il servizio StopDiagnosticWatchdog.
Servizi di dump dell'heap
In genere, un dump dell'heap è utile nelle situazioni indicate di seguito.
Problemi di memoria in cui si sospetta una perdita
Server bloccato
Il dump dell'heap Java su disco è un'operazione costosa che mette il server ThingWorx in uno stato di non risposta mentre viene eseguito un processo completo di garbage collection e l'heap viene svuotato sul disco. Questo processo può richiedere molto tempo per un heap JVM di grandi dimensioni (10-30 minuti).
Sono disponibili i seguenti servizi di dump dell'heap:
SetHeapDumpFlag - Per evitare il dump accidentale dell'heap, l'estensione Support Tool richiede che il servizio SetHeapDumpFlag venga eseguito prima del servizio DumpHeap, per verificare che l'utente desideri eseguire il dump dell'heap su disco. Questo servizio imposta un flag interno che attiva il servizio DumpHeap. Il flag non permane tra i riavvii del server. Pertanto, se il server ThingWorx viene riavviato, è necessario eseguire nuovamente il servizio SetHeapDumpFlag. Il flag interno che attiva il servizio DumpHeap può essere disattivato eseguendo il servizio ClearHeapDumpFlag.
ClearHeapDumpFlag - Cancella il flag interno che attiva l'utilizzo del servizio DumpHeap, disattivando il servizio finché il servizio SetHeapDumpFlag non viene eseguito di nuovo.
DumpHeap - Per evitare dump accidentali dell'heap che possono bloccare il server per alcuni minuti mentre vengono eseguiti, questo servizio può essere eseguito solo dopo l'esecuzione del servizio SetHeapDumpFlag. Questo servizio indica a JVM di eseguire le operazioni descritte di seguito.
Eseguire il dump dello stato corrente dei thread su disco (scritto in /ThingworxStorage/repository/SupportTools.Repository/stacktrace, effettuando un'aggiunta se presente)
Eseguire il dump dello stato corrente dell'heap JVM su disco (scritto in <DirectoryTomcat>/logs/heapdump.hprof, sovrascrivendo un file esistente se presente)
* 
Il dump dell'heap non viene appositamente scritto nel repository. Deve essere compresso all'esterno delle cartelle ThingWorx.
Servizi di dump dei thread (analisi dello stack)
DumpAllThreads - Scrive lo stato corrente dei thread di JVM su disco. Per default, le analisi dello stack sono scritte in/ThingworxStorage/repository/SupportTools.Repository/stacktrace. Se il file esiste già, il nuovo dump dei thread viene aggiunto alla fine del file. Un'analisi dello stack/un dump dei thread si compone dei seguenti elementi:
Data e ora di raccolta del thread.
Identificatori, stati del thread e stack di chiamata al thread per ogni thread attivo in JVM.
Operazioni watchdog
Il watchdog di diagnostica è un piccolo processo che viene eseguito in background nel server ThingWorx per rilevare la presenza di file trigger nel file system. Non è necessario arrestare, avviare o regolare questo processo, a meno che non si ricevano indicazioni a riguardo dal supporto tecnico PTC.
Il processo viene avviato automaticamente al riavvio di ThingWorx e offre i vantaggi descritti di seguito.
La possibilità di generare automaticamente i dump dei thread/le analisi dello stack a intervalli regolari.
La possibilità di attivare un dump dei thread o un dump dell'heap quando Composer non risponde o non è raggiungibile.
Sono disponibili i seguenti servizi watchdog:
GetWatchdogInterval - Restituisce l'intervallo corrente tra i controlli watchdog o -1 se il watchdog non è in esecuzione.
SetWatchdogInterval - Imposta l'intervallo tra watchdog su un nuovo valore in secondi. L'intervallo di default è di 30 secondi. Il nuovo intervallo diventa effettivo dopo il controllo watchdog successivo.
StartDiagnosticWatchdog - Avvia il thread del watchdog di diagnostica se arrestato.
StopDiagnosticWatchdog - Arresta il thread del watchdog di diagnostica se avviato.