Como soluciono problemas de alta utilização da CPU no meu banco de dados do Amazon RDS para Oracle?
Minha instância de banco de dados do Amazon Relational Database Service (Amazon RDS) para Oracle tem uma alta taxa de utilização da CPU.
Resolução
Ao diagnosticar problemas relacionados à alta utilização da CPU, identifique o período em que o problema ocorreu.
Métricas do CloudWatch
O Amazon RDS envia métricas para o Amazon CloudWatch a cada minuto para cada banco de dados ativo. Analise as seguintes métricas do CloudWatch para o Amazon RDS para identificar padrões de CPU por longos períodos:
- CPUUtilization
- CPUCreditUsage, se você usar uma instância T2 ou T3
- CPUCreditBalance, se você usar uma instância T2 ou T3
Além disso, analise as métricas a seguir para verificar se houve uma alteração no workload e se algum limite foi violado:
- DatabaseConnections
- DiskQueueDepth
- FreeableMemory
- ReadIOPS
- ReadLatency
- WriteIOPS
- WriteLatency
Observação: esses fatores podem contribuir para o pico na utilização da CPU.
Para obter mais informações, consulte Visualizar o status do cluster.
Métricas do Monitoramento aprimorado
O Monitoramento aprimorado fornece métricas em tempo real para o sistema operacional em que sua instância de banco de dados é executada.
Para ver o período de tempo do pico na utilização da CPU, faça o seguinte:
- Abra o console do Amazon Aurora e do RDS.
- No painel de navegação, clique em Bancos de dados.
- Selecione o banco de dados que você deseja monitorar.
- Clique na guia Monitoramento.
- Da lista suspensa Monitoramento, selecione Monitoramento aprimorado.
- Na exibição de Monitoramento Aprimorado, se a instância for uma implantação multi-AZ, selecione primária para ver as métricas do sistema operacional da instância primária. Selecione secundária para ver as métricas da réplica em espera.
- Selecione a data e a hora de início.
- No canto direito da página, selecione a duração. É possível selecionar 5 minutos, 15 minutos, 30 minutos ou 1 hora.
O grafo Total da CPU indica o período em que a utilização da CPU aumentou.
Os grafos Load Avg 1 min, Load Avg 5 min e Load Avg 15 min mostram o número de processos que estavam solicitando o tempo de CPU. O tempo de CPU é calculado no último minuto. Esses grafos também mostram os últimos cinco minutos e os últimos 15 minutos. Se a média de carga for maior que o número de vCPUs, a instância pode enfrentar um gargalo de CPU.
Para visualizar os processos do sistema operacional, selecione Lista de processos do sistema operacional na lista suspensa Monitoramento. Em seguida, classifique a lista por valores de CPU% para identificar o processo que tem o maior uso da CPU. Para obter mais informações, consulte Como visualizar métricas do SO no console do RDS.
Depois de identificar o processo que tem a maior utilização da CPU, execute esta consulta para mapear o ID do processo para uma sessão no banco de dados:
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(+);
Por padrão, todos os grafos de Monitoramento aprimorado não são exibidos no painel de Monitoramento aprimorado. Para ativar grafos adicionais e ter uma visão do workload no momento do pico na utilização da CPU, faça o seguinte:
- Abra o console do Aurora e do RDS.
- No painel de navegação, clique em Bancos de dados.
- Selecione o banco de dados que você deseja monitorar.
- Clique na guia Monitoramento.
- Da lista suspensa Monitoramento, selecione Monitoramento aprimorado.
- Na exibição de Monitoramento aprimorado, clique em Gerenciar grafos.
- Selecione os grafos que você deseja visualizar.
- Clique em Salvar.
É possível optar por visualizar os seguintes exemplos de grafos:
Memória
- Memória livre
- Memória em cache
- Memória em buffer
- Memória total
- Memória suja
- Memória ativa
- Memória do slab
Observação: as métricas relacionadas à memória são recuperadas do arquivo /proc/meminfo.
Troca
- Troca
- Troca gratuita
E/S de disco e E/S de dispositivo físico
- ES/s de leitura
- ES/s de gravação
- Tamanho médio da fila
- Espera
CPU
- Usuário da CPU
- Total da CPU
- Sistema da CPU
- Espera da CPU
- CPU ociosa
- CPU Nice
Para ver a lista de métricas disponíveis, consulte Visão geral do monitoramento avançado.
Para obter mais informações sobre Monitoramento aprimorado, consulte Monitorar métricas do SO com o monitoramento avançado.
Para obter mais informações sobre o custo do Monitoramento aprimorado, consulte O que é o Amazon Relational Database Service (Amazon RDS)?.
Métricas do Insights de Performance do Amazon RDS
No painel do Insights de Performance, é possível visualizar a carga do banco de dados e filtrar a carga por esperas, instruções SQL, hosts ou usuários.
Para visualizar as métricas do Insights de Performance, conclua as seguintes etapas:
- Abra o console do Aurora e do RDS.
- No painel de navegação, clique em Insights de Performance.
- Selecione a instância de banco de dados que você deseja monitorar.
- Por padrão, as estatísticas da última 1 hora aparecem no painel do Insights de Performance. Para o período de tempo que você analisa, selecione Relativo ou Absoluto.
- No grafo Carga do banco de dados, verifique a hora em que ocorreu um pico no uso da CPU.
- Clique na guia Esperas principais.
Observação: verifique os principais eventos de espera durante o período do pico. - Clique na guia SQL principal.
- Analise e otimize as instruções SQL que contribuíram para o pico.
Para obter mais informações sobre o custo do Insights de Performance, consulte Preços dos Insights de Performance do Amazon RDS.
Statspack
Statspack do Oracle é uma ferramenta de relatório de desempenho que fornece as métricas de desempenho do seu banco de dados em um período específico.
Para usar o Statspack para analisar a utilização da CPU da sua instância, conclua as seguintes etapas:
- Gere um relatório do Statspack para o período em que você teve um problema.
- Analise e otimize as consultas que resultam em uma alta carga de CPU.
- Analise os principais eventos de espera.
Exemplo de extrato de um relatório do 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
Para obter mais informações, consulte Oracle Statspack no site da Oracle.
AWR
O Automatic Workload Repository é uma ferramenta de relatório de desempenho do Oracle que fornece métricas de desempenho em um período específico. Para obter mais informações, consulte Automatic Workload Repository no site do Oracle.
Observação: o AWR exige uma licença do Diagnostic Pack e está disponível somente na edição Enterprise do Oracle.
Para usar o AWR para identificar a causa da carga da CPU, conclua as seguintes etapas:
-
Execute uma consulta semelhante à seguinte para identificar o ID do snapshot inicial e final do período de alta carga da CPU:
SELECT SNAP_ID, BEGIN_INTERVAL_TIME FROM DBA_HIST_SNAPSHOT ORDER BY 1; -
Analise e otimize as consultas listadas na seção SQL ordenado por tempo de CPU do relatório do AWR.
-
Analise os principais eventos de espera.
No Oracle 12c e em versões posteriores, os relatórios do Automatic Database Diagnostic Monitor (ADDM) e do Active Session History (ASH) estão incluídos no relatório da AWR.
Observação: um relatório da AWR que é gerado para mais de quatro IDs de snapshot consecutivos não possui todos os relatórios do ADDM e do ASH.
ADDM
O Automatic Database Diagnostic Monitor é uma ferramenta de diagnóstico que analisa os dados do AWR, identifica gargalos de desempenho e fornece recomendações.
Observação: o ADDM exige uma licença do Diagnostic Pack e está disponível somente na edição Enterprise do Oracle.
Para usar o ADDM para analisar os dados do AWR, conclua as seguintes etapas:
-
Para identificar o ID do snapshot inicial e final do período de alta carga da CPU, execute este exemplo de consulta:
SELECT SNAP_ID, BEGIN_INTERVAL_TIME FROM DBA_HIST_SNAPSHOT ORDER BY 1; -
Analise as recomendações no relatório do ADDM.
Para obter mais informações sobre relatórios do ADDM, consulte FAQ: Automatic Workload Repository (AWR) Reports (Doc ID 1599440.1) (Perguntas frequentes: Relatórios do Automatic Workload Repository (AWR) (ID do Doc 1599440.1)) no site da Oracle.
ASH
O Active Session History é uma ferramenta de diagnóstico que coleta informações da sessão ativa. Para usar o ASH para solucionar problemas transitórios de desempenho, conclua as seguintes etapas:
- Gere um relatório do ASH para o período em que houve uma alta carga de CPU.
Observação: o ASH exige uma licença do Diagnostic Pack e está disponível somente na edição Enterprise do Oracle. - Baixe o relatório do ASH.
- Consulte a seção SQL principal com Eventos principais.
Para obter mais informações sobre relatórios do ASH, consulte Analyzing Sampled Data (Análise de dados amostrados) no site do Oracle.
Oracle SQLT
O Amazon RDS oferece suporte ao Oracle SQLTXPLAIN (SQLT) por meio do uso da opção SQLT. O SQLT é uma ferramenta usada para diagnosticar instruções SQL que não funcionam bem.
Para criar um relatório para uma declaração SQL específica, consulte Oracle SQLT no site do Oracle.
É possível receber o seguinte erro ao usar o SQLT:
Error: ORA-20106: SQLT parameter connect_identifier must be set when running SQLT from a remote client.
Se isso acontecer, execute um dos seguintes comandos antes de executar a extração:
EXEC sqltxadmin.sqlt$a.set_sess_param('connect_identifier';, '@SID'); EXEC sqltxadmin.sqlt$a.set_param('connect_identifier', '@example-hostname:example-port/example-sid');
Informações relacionadas
Ferramentas de monitoramento do Amazon RDS
Realização de tarefas comuns de banco de dados para instâncias de banco de dados
How do I check the performance statistics of an Amazon RDS DB instance that is running Oracle? (Como faço para verificar as estatísticas de desempenho de uma instância de banco de dados do Amazon RDS que está executando o Oracle?)
- Tópicos
- Database
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- Resposta aceita
feita há 9 meses
feita há um ano
feita há 9 meses