Utilisation du sous-système d'utilisation pour surveiller le ralentissement de l'exécution des services
Lorsque vous activez le sous-système d'utilisation, il collecte des mesures détaillées sur la durée d'exécution des services. Les détails suivants sont récupérés à l'aide des services de ce sous-système :
Temps nécessaire à un service pour s'exécuter (minimum, maximum et temps moyen)
Nombre de fois qu'un service est exécuté
Les statistiques sont enregistrées en millisecondes à partir de l'heure à laquelle le serveur a été redémarré pour la dernière fois. Elles peuvent cependant être conservées en activant l'option Activer la persistance des statistiques. Utilisez le service WriteStatisticsReport pour créer un fichier CSV qui contient ces statistiques. Le fichier CSV est créé dans le dossier ThingworxStorage.
Les mesures ne sont collectées qu'une fois le service terminé. Si un service s'exécute dans une boucle infinie qui met finalement le serveur hors service, la durée de ce service n'est pas consignée.
Il est recommandé d'exporter et d'analyser les données du sous-système d'utilisation pour identifier les services à long terme. Si vous avez identifié un service lent, mettez à jour les services pour imprimer les lignes de journalisation. Les journaux ainsi générés peuvent récupérer la durée des opérations. Parfois, un jeu de paramètres spécifique ou une requête spécifique est la cause du ralentissement du comportement. La consignation des paramètres dans le script constitue une méthode simple et fiable de collecter ces données. Le script suivant peut être déroulé pour imprimer des informations détaillées sur les opérations prenant plus de 30 secondes. Le script peut être mis à jour ultérieurement afin d'imprimer les paramètres de service ou d'autres données selon les besoins :
var startTime= new Date();
// potentially slow operation
var endTime = new Date();
//calculate difference in seconds and print details only if operation takes over 30 seconds
var diff = (endTime.getTime() - startTime.getTime) / 1000 % 60;
if (diff > 30) logger.error("+++Slow operation: " + diff + "seconds "); // add any parameters or queries