Untersystem für die Nutzung zum Überwachen der langsamen Ausführung von Diensten verwenden
Wenn Sie das Untersystem für die Nutzung aktivieren, werden detaillierte Metriken über die Dauer der Dienstausführung abgerufen. Die folgenden Details werden mithilfe der Dienste in diesem Untersystem abgerufen:
Zeit, die ein Dienst benötigt, um die Ausführung abzuschließen (Minimum, Maximum und durchschnittliche Zeit)
Anzahl der Dienstausführungen
Statistiken werden in Millisekunden ab dem Zeitpunkt aufgezeichnet, ab dem der Server zum letzten Mal neu gestartet wurde, können jedoch durch Aktivieren der Option Statistiken-Persistenz aktivieren persistent gemacht werden. Verwenden Sie den Dienst WriteStatisticsReport, um eine CSV-Datei zu erstellen, die diese Statistiken enthält. Die CSV-Datei wird im Ordner ThingworxStorage erstellt.
Die Metriken werden erst gesammelt, nachdem ein Dienst abgeschlossen ist. Wenn ein Dienst in einer Endlosschleife ausgeführt wird, die letztendlich dazu führt, dass der Server ausfällt, wird die Zeit für diesen Dienst nicht aufgezeichnet.
Es wird empfohlen, Daten aus dem Untersystem für die Nutzung zu exportieren und zu analysieren, um Dienste mit langer Ausführungszeit zu identifizieren. Wenn Sie einen langsamen Dienst identifiziert haben, aktualisieren Sie die Dienste, um Protokollierungszeilen auszugeben. Diese Protokolle können die Dauer der Operationen abrufen. Manchmal ist ein bestimmter Parametersatz oder eine bestimmte Abfrage für das langsame Verhalten verantwortlich. Das Protokollieren der Parameter im Skript ist eine einfache und zuverlässige Methode, um diese Daten zu erfassen. Das folgende Skript kann erweitert werden, um detaillierte Informationen über die Operationen auszugeben, die länger als 30 Sekunden dauern. Das Skript kann weiter aktualisiert werden, um Dienstparameter oder andere Daten nach Bedarf auszugeben:
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
War dies hilfreich?