Tools zur Leistungsüberwachung für die Datenbankschicht
Die meisten Datenbank-Engines der Unternehmensklasse, die mit ThingWorxbereitgestellt werden können, bieten gute Tools für Überwachung und Problemerkennung. Arbeiten Sie mit Ihrem DBA-Team zusammen, um Ihre Datenbank zusammen mit der lösungsseitigen Überwachung zu überwachen und zu analysieren.
Nachfolgend finden Sie einige der empfohlenen Problemerkennungsabfragen für PostgreSQL- und Microsoft SQL-Datenbanken. Diese Datenbanken sind die am häufigsten verwendeten Unternehmensdatenbanken für ThingWorx Modelldaten.
Postgres
Überwachen Sie die folgenden Metriken, um Ressourcenengpässe auf dem PostgreSQL-Server zu identifizieren:
Freier Festplatten-Speicherplatz
CPU-Verwendung
E/A-Verwendung
Sie müssen die Abfragen mit langer Ausführungszeit identifizieren und optimieren. Solche Abfragen können andere Abfragen blockieren und die Wartezeit verlängern, bis Ressourcen wieder frei sind. Dies kann dazu führen, dass Threads mit langer Ausführungszeit auf eine Datenbanksperre für ThingWorx warten. Eine Datenbanksperre ermöglicht es einer einzelnen Anweisung, den aktuellen Status der Zeile oder Tabelle zu sperren. Zu viele Sperren wirken sich auf die Leistung der Lösung aus.
MSSQL
Für Microsoft SQL-Datenbanken wird empfohlen, die Datenbankstatistiken nachts in Produktionsumgebungen zu sammeln. Darüber hinaus sollten Indizes für eine hohe Fragmentierung überprüft und ggf. neu erstellt werden, insbesondere dann, wenn die Datenbank nicht auf SSD ausgeführt wird. Die Protokolle für erweiterte MSSQL-Ereignisse sollten regelmäßig auf lange Warte- oder Deadlock-Operationen in der ThingWorx Datenbank überprüft werden. In Zeiträumen mit niedriger Leistung kann die folgende Abfrage Transaktionen identifizieren, die auf eine Ressource warten:
SELECT t.*,r.*, SUBSTRING(t.text, statement_start_offset/2 + 1,
(CASE WHEN statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), t.text)) * 2
ELSE statement_end_offset
END - statement_start_offset) / 2)
FROM sys.dm_exec_requests AS r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
Wenn eine Anweisung ausgesetzt wurde oder längere Zeit ausgeführt wird, prüfen Sie die Spalten wait_type und wait_resource, um den Grund für die Wartezeit zu identifizieren.
Um festzustellen, ob die Anweisung auf Sperren wartet, identifizieren Sie die Sitzungs-ID, und führen Sie Folgendes aus:
select * from sys.dm_tran_locks where session_id = 158
War dies hilfreich?