Strumenti di monitoraggio delle prestazioni per il livello database
La maggior parte dei motori di database di livello aziendale che possono essere distribuiti con ThingWorx offre validi strumenti di monitoraggio e di rilevamento dei problemi. Lavorare con il proprio team DBA per monitorare e analizzare il database insieme al monitoraggio lato soluzione.
Di seguito sono riportate alcune delle interrogazioni di rilevamento dei problemi consigliate per i database PostgreSQL e Microsoft SQL. Si tratta dei database aziendali più utilizzati per i dati modello ThingWorx.
Postgres
Monitorare le metriche riportate di seguito per identificare i colli di bottiglia delle risorse sul server PostgreSQL:
Spazio libero su disco
Utilizzo CPU
Utilizzo I/O
È necessario identificare e ottimizzare le interrogazioni a esecuzione prolungata. Tali interrogazioni possono bloccarne altre e aumentare il tempo di attesa necessario perché le risorse siano di nuovo libere. Ciò può comportare che thread a esecuzione prolungata restino in attesa di un blocco di database su ThingWorx. Un blocco di database consente a una singola istruzione di bloccare lo stato corrente della riga o della tabella. Un numero eccessivo di blocchi influisce sulle prestazioni della soluzione.
MSSQL
Per i database Microsoft SQL, negli ambienti di produzione si consiglia di raccogliere le statistiche di database durante le ore notturne. Inoltre è opportuno esaminare gli indici per la frammentazione elevata e ricrearli in base alle esigenze, soprattutto se il database non è in esecuzione su SSD. I log degli eventi estesi di MSSQL devono essere esaminati regolarmente per tutte le operazioni particolarmente lunghe o di blocco critico nel database ThingWorx. Durante i periodi di rallentamento delle prestazioni, l'interrogazione riportata di seguito consente di identificare le transazioni in attesa di una risorsa.
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
Se un'istruzione viene sospesa o è in esecuzione per una durata più lunga, controllare le colonne wait_type e wait_resource per identificare il motivo dell'attesa.
Per verificare se l'istruzione è in attesa di un blocco, identificare l'ID sessione ed eseguire:
select * from sys.dm_tran_locks where session_id = 158
È stato utile?