Extensibilité de ThingWorx > Extensions > Outils de support
Outils de support
L'extension d'outils support est utilisée pour les opérations de diagnostic dans ThingWorx, telles que la collecte des thread dumps, la surveillance des performances et le vidage du segment de mémoire.
Emplacement
Cet outil est disponible sur le site support.ptc.com, sous Télécharger un logiciel > Commander et télécharger des mises à jour > ThingWorx Foundation > Release 8.5 > ThingWorx Support Tool > Code de date le plus récent > ThingWorx-Support-Tools--<version>.
Utilisation de l'extension
Une fois l'extension importée dans ThingWorx, les entités suivantes sont créées :
SupportTools.Template : modèle d'objet qui contient les services de diagnostic.
SupportTools.Entity  : instance d'objet des Outils de support qui permet d'accéder aux services de diagnostic.
SupportTools.Repository : référentiel de fichiers dans lequel les Outils de support contrôlent et génèrent les fichiers.
L'extension fournit des services permettant les opérations de diagnostic suivantes :
Ecriture de l'état du segment de mémoire de la machine virtuelle Java sur le disque (vidage du segment de mémoire)
Ecriture de l'état du thread de la machine virtuelle Java sur le disque (vidage de thread ou trace de pile)
Création d'un processus de surveillance sur le serveur ThingWorx qui peut être utilisé pour déclencher l'un ou l'autre des événements ci-dessus dans les cas où ThingWorx Composer ne répond pas.
Pour déclencher un vidage de thread ou une trace de pile à l'aide de la surveillance :
Créez un fichier vide nommé runstacktrace dans le répertoire /ThingworxStorage/repository/SupportTools.Repository.
Les vidages de thread continueront d'être gravés sur le disque toutes les 30 secondes (par défaut) jusqu'à ce que ce fichier soit à nouveau supprimé.
Pour déclencher un vidage du segment de mémoire à l'aide de la surveillance :
Créez un fichier texte vide nommé dumpheap dans le répertoire /ThingworxStorage/repository/SupportTools.Repository, sans extension.
Le vidage du segment de mémoire aura lieu une seule fois lors du prochain contrôle de surveillance. La surveillance du vidage du segment de mémoire est alors désactivée jusqu'au prochain redémarrage du serveur.
Pour arrêter un vidage de thread ou une trace de pile à l'aide de la surveillance :
Supprimez le fichier nommé runstacktrace dans le répertoire /ThingworxStorage/repository/SupportTools.Repository.
Utilisez le service StopDiagnosticWatchdog.
Services de vidage du segment de mémoire
En général, un vidage du segment est utile dans les situations suivantes :
Problèmes de mémoire où une fuite est suspectée
Serveur bloqué
Le vidage du segment de mémoire Java sur le disque est une opération coûteuse car le serveur ThingWorx reste à l'état sans réponse pendant le nettoyage complet de la mémoire (Garbage Collection) et le vidage du segment de mémoire (Heap Dump) sur le disque. L'exécution de ce processus peut prendre un certain temps si la mémoire de la machine virtuelle Java est Java volumineuse (de 10 à 30 minutes).
Les services de vidage de segment de mémoire suivants sont disponibles :
SetHeapDumpFlag : pour empêcher le vidage accidentel du segment de mémoire, l'extension Outils de support exige que le service SetHeapDumpFlag soit exécuté avant le service DumpHeap, afin de vérifier que l'utilisateur souhaite bien vider le segment de mémoire sur le disque. Ce service définit un indicateur interne qui active le service DumpHeap. Ce marqueur n'est pas conservé au redémarrage du serveur ; si le serveur ThingWorx est redémarré, le service SetHeapDumpFlag doit être réexécuté. L'indicateur interne activant le service DumpHeap peut être désactivé en exécutant le service ClearHeapDumpFlag.
ClearHeapDumpFlag : supprime l'indicateur interne qui active l'utilisation du service DumpHeap, en désactivant le service jusqu'à ce que le service SetHeapDumpFlag soit à nouveau exécuté.
DumpHeap : pour empêcher les vidages de segment de mémoire accidentels qui peuvent verrouiller le serveur pendant quelques minutes lors de leur exécution, ce service ne peut être exécuté qu'après l'exécution du service SetHeapDumpFlag. Ce service demande à la machine virtuelle Java d'effectuer les opérations suivantes :
Vider l'état actuel du thread sur le disque (écrit dans /ThingworxStorage/repository/SupportTools.Repository/stacktrace, ajouté si présent)
Vider l'état actuel du segment de mémoire de la machine virtuelle Java sur le disque (écrit dans <RépertoireTomcat>/logs/heapdump.hprof, en écrasant le fichier existant si présent)
* 
Le vidage du segment de mémoire n'est pas écrit par défaut dans le référentiel. Il doit être compressé à l'extérieur de ThingWorx dossiers.
Services de vidage des threads (Stacktraces)
DumpAllThreads : écrit l'état actuel du thread de la machine virtuelle Java sur le disque. Par défaut, les traces de pile sont écrites dans /ThingworxStorage/repository/SupportTools. Repository/stacktrace. Si le fichier existe déjà, le nouveau vidage de thread sera ajouté à la fin du fichier. Une trace de pile ou un vidage de thread se compose des éléments suivants :
Horodatage de collecte du thread.
Identificateurs, états du thread et piles d'appels du thread pour chacun des threads actifs dans la machine virtuelle Java.
Opérations de surveillance
La surveillance de diagnostic est un petit processus qui s'exécute en arrière-plan sur le serveur ThingWorx, pour observer les fichiers de déclenchement dans le système de fichiers. Il n'est pas nécessaire d'arrêter, de démarrer ou d'ajuster ce processus, sauf si vous y êtes invité par le Support technique de PTC.
Ce processus lancé automatiquement au démarrage de ThingWorx offre les avantages suivants :
Possibilité de générer des vidages de threads ou des traces de pile automatiquement à intervalles réguliers.
Possibilité de déclencher un vidage du thread ou du segment de mémoire lorsque Composer est sans réponse ou inaccessible.
Les services de surveillance suivants sont disponibles :
GetWatchdogInterval : renvoie l'intervalle actuel entre les contrôles de surveillance, ou -1 si la surveillance n'est pas en cours d'exécution.
SetWatchdogInterval : remplace la valeur de l'intervalle de surveillance par une nouvelle valeur en secondes. L'intervalle par défaut est de 30 secondes. Le nouvel intervalle prendra effet après le contrôle de surveillance suivant.
StartDiagnosticWatchdog : démarre le thread de surveillance de diagnostic s'il a été arrêté.
StopDiagnosticWatchdog : arrête le thread de surveillance de diagnostic s'il a été démarré.