Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso risolvere i problemi di utilizzo elevato della CPU nella mia istanza Amazon RDS per SQL Server?
Riscontro un elevato utilizzo della CPU nelle mie istanze database Amazon Relational Database Service (Amazon RDS) per Microsoft SQL Server.
Breve descrizione
Un aumento dell'utilizzo della CPU può dipendere dai seguenti motivi:
- Carichi di lavoro pesanti avviati dall'utente, più query concorrenti o transazioni di lunga durata
- Utilizzo di una classe di istanza con provisioning insufficiente per il carico di lavoro
- Statistiche non aggiornate e frammentazione dell'indice o indici mancanti
- Query con margini di miglioramento
- Blocchi e deadlock
- Parallelismo
- Compilazione e ricompilazione frequenti
- Sniffing dei parametri
- Esaurimento dei thread
Per identificare la causa dell'utilizzo elevato della CPU in un'istanza Amazon RDS per SQL Server, utilizza i seguenti strumenti:
- Metriche di Amazon CloudWatch per Amazon RDS
- Monitoraggio avanzato
- Performance Insights
- Database Insights
- Strumenti di SQL Server
Dopo aver identificato la causa, puoi analizzare e ottimizzare il carico di lavoro per ridurre l'utilizzo elevato della CPU.
Risoluzione
Metriche di CloudWatch per Amazon RDS
Utilizza le metriche di CloudWatch per Amazon RDS per identificare modelli di utilizzo della CPU su periodi di tempo prolungati.
Per individuare i momenti in cui il carico di lavoro incrementa l'utilizzo della CPU, completa i seguenti passaggi:
- Apri la console Amazon RDS.
- Nel pannello di navigazione scegli Database, quindi seleziona il database che desideri monitorare.
- Scegli la scheda Monitoraggio.
- Scegli il menu Monitoraggio, quindi CloudWatch.
- Cerca le seguenti metriche di CloudWatch, quindi confronta i grafici:
WriteIOPs
ReadIOPs
ReadThroughput
WriteThroughput
CPUUtilization
CPUCreditBalance
CPUCreditUsage
Nota: se il saldo dei crediti CPU diminuisce costantemente e il loro utilizzo aumenta costantemente, il numero di core della CPU non è sufficiente per il carico di lavoro. Se utilizzi un'istanza appartenente alla classe di istanza t2 o t3, controlla il provisioning dell'istanza in quanto potrebbe essere insufficiente.
Dopo aver identificato l'intervallo di tempo, utilizza Monitoraggio avanzato per esaminare i dati associati all'istanza database in modo più dettagliato. Puoi impostare Monitoraggio avanzato in modo che raccolga dati a intervalli di 1, 5, 10, 15, 30 o 60 secondi.
Monitoraggio avanzato
Puoi configurare Monitoraggio avanzato per monitorare il sistema operativo in esecuzione nell'istanza database.
Per verificare l'utilizzo della CPU con Monitoraggio avanzato, completa i seguenti passaggi:
- Apri la console Amazon RDS.
- Nel pannello di navigazione scegli Database, quindi seleziona il database che desideri monitorare.
- Scegli la scheda Monitoraggio.
- Scegli il menu Monitoraggio, quindi Elenco dei processi del sistema operativo.
Verifica se i processi del sistema operativo, i processi di RDS, i processi di SQL Server o i processi dell'Agente SQL stanno determinando un utilizzo elevato della CPU. Puoi anche verificare la percentuale di CPU e memoria utilizzata da questi processi.
Utilizza la console per monitorare le metriche delle prestazioni. Nella scheda Monitoraggio, scegli il menu Monitoraggio, quindi Gestisci grafici.
Per determinare quando la CPU sta eseguendo processi utente, sta eseguendo kernel o è inattiva, seleziona i grafici relativi alle metriche CPU User, CPU System e CPU Idle. Quindi seleziona le metriche relative agli I/O del disco e agli I/O del dispositivo fisico. Le metriche sono Read IO/s, Write IO/s, Read KB/s e Write KB/s. Puoi infine visualizzare i parametri relativi alla memoria, tra cui quelli riguardanti la memoria disponibile, la memoria totale di SQL Server e la memoria totale (Available Memory, SQL Server Total Memory e Total Memory). Queste metriche sono utili perché se la CPU attende più tempo le risorse, potresti riscontrare un utilizzo elevato della CPU.
Per ulteriori informazioni, consulta Visualizzazione delle metriche nella console RDS.
Database insights
Utilizza CloudWatch Database Insights per risolvere i principali fattori che contribuiscono al carico del database e ai singoli processi del sistema operativo in esecuzione su un gruppo di istanze.
Per impostazione predefinita, per un database Amazon RDS è attivata la modalità Standard di Database Insights. Per attivare la modalità Standard quando crei o modifichi un'istanza database, consulta Attivazione della modalità Standard di Database Insights per Amazon RDS.
Nota: se non utilizzi autorizzazioni più ampie, assicurati di concedere le autorizzazioni IAM richieste per Database Insights. Per ulteriori informazioni, consulta Inizia a usare CloudWatch Database Insights.
Per ulteriori informazioni su Amazon RDS e sulle classi di istanza supportate, consulta Supporto di classe di istanza, Regione e motore di database Amazon RDS per Database Insights.
Performance insights
Attiva Performance insights per identificare le query responsabili del carico del database.
Completa i seguenti passaggi:
- Accedi alla dashboard di Performance insights.
- Seleziona la scheda SQL principale che corrisponde all'intervallo di tempo che desideri analizzare.
- Identifica la query che richiede più tempo.
- Controlla la query che richiede molte risorse e gli eventi di attesa osservati durante questo periodo. Di seguito sono riportati gli eventi di attesa spesso associati a un utilizzo elevato della CPU:
SOS_SCHEDULER_YIELD mostra che un thread worker ha ceduto l'esecuzione a un altro thread. Se il numero di attese è elevato con un tempo di attesa ridotto, le query generalmente dipendono dalla CPU. Quando i thread worker cedono l'esecuzione, il tempo di attesa per le query che dipendono dalla CPU potrebbe aumentare. Se il tempo di attesa è lungo, devi rivedere il carico di lavoro. Se SOS_SCHEDULER_YIELD è prevalente, il problema è la pressione della CPU. Rivedi il tipo di carico di lavoro ed esegui ulteriori ottimizzazioni.
CXPACKET e CXCONSUMER sono eventi di attesa legati al parallelismo che di solito non sono motivo di preoccupazione. Tuttavia, se gli eventi di attesa sono frequenti e influiscono sulle prestazioni, rivedi le query e imposta valori appropriati per la soglia di costo del parallelismo. Assicurati che SQL Server scelga il parametro di parallelismo con costo inferiore nel gruppo di parametri. Puoi inoltre possibile aumentare il grado massimo di parallelismo, MAXDOP, a 1 a livello di query o istanza.
ThreadPool mostra l'esaurimento dei thread. Se la classe di istanza è in grado di gestirlo, aumenta il parametro relativo al numero massimo di thread worker. Potresti riscontrare attese ThreadPool se vengono utilizzati thread eccessivi a causa di blocchi, carico di lavoro elevato o numero elevato di query parallele. L'evento di attesa ThreadPool potrebbe inoltre verificarsi se configuri erroneamente il parametro relativo al numero massimo di thread worker.
Controlla Parametri del database per richieste batch, compilazioni SQL e ricompilazioni SQL. Controlla le query che vengono compilate più di una volta. Controlla anche se le query vengono ricompilate frequentemente per un determinato batch. In tal caso, ciò indica che nel codice della query viene utilizzata la clausola WITH RECOMPILE. Entrambi questi motivi possono causare un utilizzo eccessivo della CPU.
Strumenti di SQL Server
Per risolvere i problemi relativi all'utilizzo elevato della CPU con gli strumenti di SQL Server, intraprendi le seguenti azioni:
- Analizza query specifiche riconducibili a un utilizzo elevato della CPU, aggiorna le statistiche, gli indici mancanti e lo sniffing dei parametri. Per ulteriori informazioni, consulta Risolvere i problemi di utilizzo elevato della CPU in SQL Server sul sito web Microsoft.
- Controlla il piano di esecuzione per le query con prestazioni mediocri, quindi esegui un'ulteriore ottimizzazione. Per ulteriori informazioni, consulta Visualizzare un piano di esecuzione effettivo sul sito web Microsoft.
- Utilizza le query e gli eventi estesi per risolvere i problemi relativi a blocchi e deadlock eccessivi. Per ulteriori informazioni, consulta Informazioni e risoluzione dei problemi di blocco di SQL Server sul sito web Microsoft.
Nota: quando configuri eventi estesi in RDS per SQL Server, non puoi utilizzare il metodo standard per salvare i file .xel. - Utilizza i report di SQL Server per ottimizzare il carico di lavoro. Per ulteriori informazioni, consulta Dashboard delle prestazioni sul sito web Microsoft.
- Lingua
- Italiano
