Sintomas
Uma instância do ApsaraDB RDS for MySQL pode apresentar alto consumo de IOPS. Este tópico explica as principais causas e apresenta soluções.
Causas
Memória insuficiente na instância para cache ou ordenação de dados, resultando em E/S física excessiva.
Consultas ineficientes que verificam um número excessivo de linhas.
Soluções
Utilize um ou ambos os métodos a seguir para resolver o alto uso de IOPS:
Gere um relatório de diagnóstico da instância (recomendado).
Encerre consultas problemáticas.
Visualize o relatório de diagnóstico atual da instância
No console do DMS, faça login no banco de dados.
Escolha Performance > One-click diagnosis.
-
No console do DAS, visualize as sessões em tempo real, deadlocks e consultas lentas da instância.
A página de visão geral do One-click diagnosis exibe o status de integridade do banco de dados em uma topologia hierárquica. Além das sessões em tempo real, deadlocks e consultas lentas, a página oferece vários outros painéis de diagnóstico, incluindo: active sessions (contagem de conexões, máximo de conexões permitidas e uso de conexões); resource diagnosis (utilização de CPU, utilização de memória e uso de IOPS); QPS (valores médios e de pico, além de taxas de crescimento mensal e anual); all SQL; e space usage (uso de disco, espaço disponível restante e crescimento médio diário). Os painéis de deadlocks e slow queries são destacados para facilitar a identificação rápida de problemas.
Clique em no link de detalhes de um módulo para visualizar e aplicar otimizações.
Encerrar consultas problemáticas
Encontre e encerre consultas problemáticas usando o recurso de sessão da instância no console do DMS ou executando comandos. Recomendamos encerrar consultas com altas leituras físicas (Physical_sync_read e Physical_async_read).
Se uma instância RDS atingir o número máximo de conexões, não será possível fazer login nela pelo console do DMS ou por uma ferramenta de linha de comando do MySQL.
Caso não consiga conectar-se pelo console do DMS ou por uma ferramenta de linha de comando do MySQL, defina o parâmetro
wait_timeout(em segundos) com um valor baixo, como 60, no console do RDS. Essa ação fecha conexões ociosas há mais de 60 segundos, libera recursos e permite o login na instância.
Encerrar consultas problemáticas usando o recurso de sessão da instância
Se o relatório de diagnóstico estiver indisponível ou se não for possível aplicar as sugestões imediatamente, encerre primeiro as consultas problemáticas usando o recurso de sessão da instância no console do DMS.
Garanta que a aplicação pare de enviar as consultas problemáticas antes de prosseguir. Caso contrário, as consultas reaparecerão após o encerramento.
No console do DMS, faça login no banco de dados.
Escolha Performance > Instance session.
Selecione a sessão a ser encerrada e clique em Kill Selected.
Encerrar consultas problemáticas usando comandos
Conecte-se à instância usando uma ferramenta de linha de comando do MySQL.
-
Execute os comandos a seguir para visualizar detalhes das sessões e identificar a sessão problemática:
-
Execute o comando
show processlist;.
-
Se houver muitas sessões em execução, execute o comando
show full processlist;para visualizar o texto completo da consulta.
-
Execute o comando
kill [$ID]para encerrar a sessão. Substitua [$ID] pelo ID da sessão encontrado na colunaIdda saída do comando.
Aplicável a
ApsaraDB RDS for MySQL