Come posso risolvere i problemi di utilizzo elevato della CPU nel mio database Amazon RDS per Oracle?
Sto riscontrando un elevato utilizzo della CPU sulla mia istanza Amazon Relational Database Service (Amazon RDS) per Oracle DB.
Breve descrizione
Se il tuo database RDS per Oracle ha un elevato utilizzo della CPU, utilizza una combinazione dei seguenti strumenti per identificarne la causa:
- Metriche di Amazon CloudWatch
- Metriche di monitoraggio migliorate
- Metriche di Performance Insights
- Pacchetto statistiche Oracle
- Archivio automatico dei carichi di lavoro (AWR)
- Monitor diagnostico automatico del database (ADDM)
- Cronologia delle sessioni attive (ASH)
- Oracle SQLT
Risoluzione
Durante la diagnosi dei problemi relativi all'elevato utilizzo della CPU, identifica il periodo di tempo in cui si è verificato il problema.
Metriche di CloudWatch
Amazon RDS invia le metriche a CloudWatch ogni minuto per ogni database attivo. Esamina i seguenti parametri di CloudWatch per Amazon RDS per identificare i modelli di CPU per periodi prolungati:
- Utilizzo della CPU
- CPUCreditUsage, se utilizzi un'istanza T2 o T3
- CPUCreditBalance, se utilizzi un'istanza T2 o T3
Inoltre, esamina le seguenti metriche per verificare se c'è stata una modifica nel carico di lavoro e se sono state superate le soglie. Questi fattori potrebbero contribuire all'aumento dell'utilizzo della CPU.
- Connessioni al database
- Profondità della coda del disco
- Memoria gratuita
- Leggi IOPS
- Latenza di lettura
- Scrivi IOPS
- Latenza di scrittura
Per ulteriori informazioni, consulta Monitoraggio dei parametri Amazon RDS con Amazon CloudWatch e Visualizzazione dello stato e dei consigli delle istanze.
Metriche di monitoraggio migliorate
Enhanced Monitoring fornisce metriche in tempo reale per il sistema operativo su cui viene eseguita l'istanza DB. Mentre CloudWatch ottiene i parametri di utilizzo della CPU dall'hypervisor, Enhanced Monitoring ottiene questi parametri da un agente sull'istanza database. Le metriche di monitoraggio avanzato sono più granulari rispetto alle metriche di CloudWatch. Le metriche di monitoraggio avanzate vengono archiviate per 30 giorni nei log di CloudWatch.
Puoi definire l'intervallo di raccolta per le metriche da 1 secondo a 1 minuto. È consigliabile impostare la granularità su 1 secondo o 5 secondi per le applicazioni aziendali critiche. Con questa granularità, le metriche forniscono informazioni più accurate sul carico sull'applicazione per l'analisi dei problemi di prestazioni.
Per visualizzare il periodo di tempo del picco nell'utilizzo della CPU, procedi come segue:
- Apri la console Amazon RDS.
- Nel riquadro di navigazione, scegli Database.
- Scegli il database che desideri monitorare.
- Scegli la scheda Monitoraggio.
- Seleziona Monitoraggio avanzato dall'elenco a discesa Monitoraggio.
- Nella sezione Monitoraggio avanzato, se l'istanza è una distribuzione Multi-AZ, seleziona primaria per visualizzare le metriche del sistema operativo dell'istanza principale. Seleziona secondario per visualizzare le metriche per la replica in standby.
- Seleziona la data e l'ora di inizio.
- Nell'angolo destro, seleziona la durata. È possibile selezionare 5 minuti, 15 minuti, 30 minuti o 1 ora.
Il grafico CPU Totale indica il periodo di tempo in cui l'utilizzo della CPU è aumentato.
I grafici Load Avg 1 min, Load Avg 5 min e Load Avg 15 min mostrano il numero di processi che hanno richiesto tempo alla CPU rispettivamente nell'ultimo minuto, negli ultimi cinque minuti e negli ultimi 15 minuti. Se la media del carico è superiore al numero di vCPU, l'istanza potrebbe presentare un collo di bottiglia della CPU.
Per visualizzare i processi del sistema operativo, selezionare l'elenco dei processi del sistema operativo dall'elenco a discesa Monitoraggio. Quindi, ordina l'elenco in base ai valori della CPU% per identificare il processo che utilizza maggiormente la CPU.
Esempio:
NOME | VIRT | RES | CPU% | MEM% | VMLIMIT |
oracleORCL [27074]ᵗ | 6,07 GiB | 1.007,24 MB | 44,72 | 12,78 | illimitato |
oracleORCL [27076]ᵗ | 6,07 GiB | 1.010,02 MB | 44,64 | 12.82 | illimitato |
Per ulteriori informazioni sulle colonne dell'esempio precedente, vedere Visualizzazione delle metriche del sistema operativo nella console RDS.
Dopo aver identificato il processo con il maggior utilizzo della CPU, è possibile eseguire la seguente query per mappare l'ID del processo a una sessione nel database:
SET LINESIZE 120; SET PAGES 200; COL OSUSER FOR a20; COL USERNAME FOR a20; COL MACHINE FOR a20; SELECT a.sid, a.serial#, a.osuser, a.username, a.machine, a.sql_id, c.sql_text FROM v$session a, v$process b, v$sql c WHERE a.paddr=b.addr AND b.spid=&spid AND a.sql_id=c.sql_id(+);
Per impostazione predefinita, tutti i grafici del Monitoraggio avanzato non sono visualizzati nella dashboard del Monitoraggio avanzato. Per avere una visione del carico di lavoro al momento del picco di utilizzo della CPU, attiva grafici aggiuntivi procedendo come segue:
- Apri la console Amazon RDS.
- Nel riquadro di navigazione, scegli Database.
- Scegli il database che desideri monitorare.
- Scegli la scheda Monitoraggio.
- Seleziona Monitoraggio avanzato dall'elenco a discesa Monitoraggio.
- Nella sezione Monitoraggio avanzato, scegli Gestisci grafici.
- Seleziona i grafici che desideri visualizzare.
- Seleziona Salva.
Esempi di grafici che potresti scegliere di visualizzare:
Memoria
- Libera
- In cache
- Tamponata
- Totale
- Sporca
- Attiva
- A lastre
Nota: Le metriche relative alle metriche vengono recuperate dal file /proc/meminfo.
Di scambio
- Di scambio
- Libera
I/O del disco e I/O del dispositivo fisico
- Lettura IO/s
- Scrittura IO/s
- Dimensione media della coda
- Attesa
CPU
- Utente
- Totale
- Sistema
- Attesa
- Inattiva
- Buona
Per l'elenco delle metriche disponibili, vedere Panoramica del monitoraggio avanzato.
Per ulteriori informazioni sul monitoraggio avanzato, vedere Monitoraggio delle metriche del sistema operativo con monitoraggio avanzato.
Per informazioni sul costo del monitoraggio avanzato, consulta la sezione Costo del monitoraggio avanzato.
Metriche di Performance Insights
Con la dashboard Amazon RDS Performance Insights puoi visualizzare il carico del database e filtrarlo per attese, istruzioni SQL, host o utenti.
- Apri la console Amazon RDS.
- Nel riquadro di navigazione, scegli Performance Insights.
- Scegli l'istanza database che desideri monitorare.
- Per Visualizza passato, seleziona la durata desiderata.
- Nel grafico del carico del database, controlla il momento in cui si è verificato un picco nell'utilizzo della CPU.
- Scegli la scheda Top waits.
Nota i principali eventi di attesa durante il periodo di tempo del picco. - Scegli la scheda Top SQL.
Rivedi e ottimizza le istruzioni SQL che hanno contribuito al picco.
Per informazioni sul costo di Performance Insights, consulta i prezzi di Performance Insights.
Pacchetto statistiche Oracle
Statspack è uno strumento di reporting delle prestazioni che fornisce le metriche delle prestazioni del database in un periodo di tempo specifico.
Per esaminare l'utilizzo della CPU della tua istanza utilizzando Statspack, procedi come segue:
- Genera un rapporto statspack per il periodo di tempo in cui hai riscontrato un problema.
- Rivedi e ottimizza le query che comportano un carico elevato della CPU.
- Esamina i principali eventi di attesa.
Esempio di estratto da un rapporto Statspack:
-> Total DB CPU (s): 3,345 -> Captured SQL accounts for 91.3% of Total DB CPU -> SQL reported below exceeded 1.0% of Total DB CPU CPU CPU per Elapsed Old Time (s) Executions Exec (s) %Total Time (s) Buffer Gets Hash Value ---------- ------------ ---------- ------ ---------- --------------- ---------- 3043.36 598,100 0.01 91.0 3356.81 994,096,212 219593194 Module: JDBC Thin Client SELECT tt.ORDER_TOTAL, tt.SALES_REP_ID, tt.ORDER_DATE, customers.CUST_FIRST_NAME, customers.CUST_LAST_NAME FROM (SELECT orders.ORDER_TOTAL, orders.SALES_REP_ID, orders.ORDER_DATE, orders.customer_id, rank() Over (ORDER BY orders.O
Per ulteriori informazioni, vedere la documentazione Oracle per Oracle Statspack.
AWR
AWR (sul sito Web di Oracle) è uno strumento di reporting delle prestazioni di Oracle che fornisce metriche delle prestazioni in un periodo di tempo specifico.
Nota: AWR richiede una licenza Diagnostic Pack ed è disponibile solo per l'Enterprise Edition di Oracle.
Per identificare la causa del carico della CPU utilizzando AWR, procedi come segue:
- Esegui una query simile alla seguente per identificare l'ID dello snapshot iniziale e finale per il periodo di tempo di elevato carico della CPU:
SELECT SNAP_ID, BEGIN_INTERVAL_TIME FROM DBA_HIST_SNAPSHOT ORDER BY 1;
4. Esamina e ottimizza le query elencate nella sezione SQL ordinate per tempo di CPU del report AWR.
- Esamina i principali eventi di attesa.
In Oracle 12c e versioni successive, i report ADDM e ASH sono inclusi nel rapporto AWR.
Nota: Quando viene generato un report AWR per più di quattro ID snapshot consecutivi, tutti i report ADDM e ASH non vengono inclusi. Per generare questi report aggiuntivi, utilizza le istruzioni nelle sezioni seguenti.
ADDM
ADDM è uno strumento diagnostico che analizza i dati AWR, identifica i punti di bottiglia nelle prestazioni e fornisce raccomandazioni.
Nota: ADDM richiede una licenza Diagnostic Pack ed è disponibile solo per l'Enterprise Edition di Oracle.
- Esegui una query simile alla seguente per identificare l'ID dello snapshot iniziale e finale per il periodo di tempo di elevato carico della CPU:
SELECT SNAP_ID, BEGIN_INTERVAL_TIME FROM DBA_HIST_SNAPSHOT ORDER BY 1;
-
Rivedi i consigli nel rapporto ADDM.
ASH
ASH (sul sito Web di Oracle) è uno strumento diagnostico che raccoglie informazioni sulla sessione attiva. Per risolvere i problemi transitori di prestazioni utilizzando ASH, procedi come segue:
Nota: ASH richiede una licenza Diagnostic Pack ed è disponibile solo per l'Enterprise Edition di Oracle.
3. Consulta la sezione TOP SQL con TOP Eventi.
Per informazioni sull'interpretazione dei report AWR, ADDM e ASH, consulta la documentazione del supporto Oracle per le domande frequenti su Oracle Support Doc ID: Rapporti Automatic Workload Repository (AWR) (Doc ID 1599440.1).
Oracle SQLT
Amazon RDS supporta Oracle SQLTXPLAIN (SQLT) tramite l'uso dell'opzione SQLT. SQLT è uno strumento utilizzato per diagnosticare istruzioni SQL che non funzionano bene.
Per produrre un report per un'istruzione SQL specifica, vedere Oracle SQLT.
Se ricevi il seguente errore quando usi SQLT:
Error: ORA-20106: SQLT parameter connect_identifier must be set when running SQLT from a remote client.
Esegui uno dei seguenti comandi prima di eseguire l'estrazione:
EXEC sqltxadmin.sqlt$a.set_sess_param(‘connect_identifier’, ‘@SID’); EXEC sqltxadmin.sqlt$a.set_param(‘connect_identifier’, ‘@example-hostname:example-port/example-sid’);
Informazioni correlate
Panoramica delle metriche di monitoraggio in Amazon RDS
Generazione di report sulle prestazioni con Automatic Workload Repository (AWR)
Video correlati

Contenuto pertinente
- AWS UFFICIALEAggiornata 4 anni fa
- AWS UFFICIALEAggiornata 7 mesi fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa