Quando siamo passati da un array all flash più vecchio a un array all flash più recente (fornitore diverso ma ben consolidato), abbiamo iniziato a vedere un aumento delle attese in SQL Sentry durante i checkpoint.
Versione: SQL Server 2012 Sp4
Sul nostro vecchio deposito le nostre attese erano circa 2k con "picchi" a 2500 durante un checkpoint, con il nuovo deposito i picchi sono in genere 10k con picchi vicino a 50k. La sentinella ci punta maggiormente verso PAGEIOLATCH
Watis. Facendo la nostra analisi, sembra essere una combinazione di PAGEIOLATCH and PAGELATCH
attese. Usando Perfmon, possiamo generalmente dire che più pagine controlliamo, più attese otteniamo, ma stiamo sciacquando ~ 125 mb solo durante il checkpoint. Il nostro carico di lavoro è principalmente di scritture (principalmente inserimenti / aggiornamenti).
Il fornitore di archiviazione ci ha dimostrato che l'array collegato direttamente Fibre Channel sta rispondendo a meno di 1 ms durante questi eventi del checkpoint. L'HBA conferma anche i numeri dell'array. Inoltre non crediamo che si tratti di un problema di accodamento HBA poiché la profondità della coda non è mai stata superiore a 8. Abbiamo anche provato un nuovo HBA, modificando ZIO, accelerazione di esecuzione e impostazioni della profondità della coda senza alcun risultato. Abbiamo anche aumentato la memoria del server da 500 GB a 1 TB senza modifiche. Durante il processo di checkpoint vediamo 2 - 4 core individuali (di 16) aumentare al 100%, ma la CPU complessiva è di circa il 20%. Anche il BIOS ha prestazioni elevate. È interessante notare, tuttavia, che le CPU sono generalmente in uno stato di sospensione C2 anche se lo abbiamo disabilitato, quindi stiamo ancora cercando il motivo per cui lo stato di sospensione supera C1.
Possiamo vedere che quasi tutte le attese sono sulle pagine di dati con un PFS occasionale di tipo di pagina DCM. Le attese sono nei DB utente, non in tempdb. Vediamo anche che le attese sono su più pagine di dati, con alcuni SPID in attesa sulla stessa pagina. Il design del database ha un paio di hot spot di inserimento, ma lo stesso design era in atto con il vecchio archivio.
Eseguendo un ciclo di questa query 100 volte, siamo stati in grado di rilevare quanti SPID erano in attesa su disco rispetto alla memoria
SELECT
[owt].[wait_type], count(*) as waitcount
FROM sys.dm_os_waiting_tasks [owt]
WHERE [owt].[wait_type] LIKE 'PAGE%'
group by [owt].[wait_type]
order by 1
GO 100
La cosa "bella" è che possiamo facilmente riprodurre il problema nel nostro ambiente perf che ha lo stesso array di modelli e specifiche del server simili. Gradirei qualsiasi pensiero su dove altro cercare o su come restringere il problema. In questo momento i nostri prossimi test includono: un nuovo server con scheda madre più recente e più CPU; disabilitazione del datakeeper SIOS (anche se questo è stato in atto con la vecchia memoria); diverso marchio HBA.
exec sp_Blitz @outputtype = 'markdown'
Priorità 5: Affidabilità : - Moduli di terze parti pericolosi - Sophos Limited - Protezione da sovraccarico del buffer Sophos - SOPHOS ~ 2.DLL - È stato installato un modulo di terze parti pericoloso sospetto.
Priorità 200: Informativa : - Nodo cluster: si tratta di un nodo in un cluster. - TraceFlag On - Il flag di traccia 1117 è abilitato a livello globale. - Il flag di traccia 1118 è abilitato a livello globale. - Il flag di traccia 3226 è abilitato a livello globale.
Priorità 200: Licenze : - Funzionalità Enterprise Edition in uso * xxxxx - Il database [xxxxxx] utilizza Compression. Se questo database viene ripristinato su un server Standard Edition, il ripristino non riuscirà nelle versioni precedenti a SP1 2016. * xxxxx - Il database [xxxxxx] sta usando il partizionamento. Se questo database viene ripristinato su un server Standard Edition, il ripristino non riuscirà nelle versioni precedenti a SP1 2016.
Priorità 240: Statistiche di attesa : - Nessuna attesa significativa rilevata - Questo server potrebbe essere inattivo o qualcuno potrebbe aver cancellato le statistiche di attesa di recente.
Priorità 250: Informazioni sul server: - Hardware - Processori logici: 16. Memoria fisica: 512 GB. - Hardware - Configurazione NUMA - Nodo: 0 Stato: ONLINE Scheduler online: 8 Scheduler offline: 0 Processor Group: 0 Nodo di memoria: 0 Memory VAS Riservato GB: 1177 - Nodo: 1 Stato: ONLINE Scheduler online: 8 Scheduler offline: 0 Processore Gruppo: 0 Nodo di memoria: 1 Memory VAS Riservato GB: 0 - Piano di alimentazione - Il server dispone di CPU da 3,50 GHz ed è in modalità di alimentazione ad alte prestazioni - Ultimo riavvio del server - 4 luglio 2018 16:56 - Ultimo riavvio di SQL Server - 5 lug 2018 5:11 - Servizio SQL Server - Versione: 11.0.7462.6. Livello di patch: SP4. Edizione: Enterprise Edition (64 bit). Gruppi di disponibilità abilitati: 1. Stato gestore gruppi di disponibilità: 1 - Server virtuale - Tipo: (HYPERVISOR) - Versione di Windows - Stai utilizzando una versione piuttosto moderna di Windows: Server 2012R2 era, versione 6.3
Priorità 200: Configurazione server non predefinita: - Agent XPs - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - default compressione backup - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - soglie di processo bloccate - Questa opzione sp_configure è stata modificata. Il valore predefinito è 0 ed è stato impostato su 20. - Soglia di costo per parallelismo - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 5 ed è stato impostato su 30. - Database Mail XPs - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - grado massimo di parallelismo - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 8. - max server memory (MB) - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 2147483647 ed è stato impostato su 496640. - min server memory (MB) - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 8196. - Ottimizza per carichi di lavoro ad hoc - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - accesso remoto - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 1 ed è stato impostato su 0. - connessioni di amministrazione remota - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - scan for startup procs - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - mostra opzioni avanzate - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - xp_cmdshell - Questa opzione sp_configure è stata modificata.