O uso elevado de IOPS em uma instância do ApsaraDB RDS for MySQL geralmente indica que as consultas estão lendo dados do disco em vez da memória. Use o relatório de diagnóstico do Database Autonomy Service (DAS) para identificar a causa raiz e, em seguida, encerre as sessões responsáveis.
Causas
Os picos de IOPS no RDS for MySQL ocorrem devido a uma destas duas causas raiz:
Memória insuficiente para cache ou ordenação: quando a capacidade de memória da instância RDS não supre as necessidades de cache ou ordenação de dados, o sistema gera um grande volume de E/S física.
Varreduras completas de tabela ou consultas de baixa eficiência: consultas que varrem um grande número de linhas sem usar um índice produzem E/S proporcional às linhas lidas, e não às linhas retornadas. Ordenações repetidas sem um plano de execução eficiente agravam esse efeito.
Reduzir o uso de IOPS
Use um ou ambos os métodos a seguir.
Gerar um relatório de diagnóstico (recomendado)
O relatório de diagnóstico com um clique do DAS exibe sessões ativas, deadlocks e consultas lentas em uma única visualização, além de fornecer sugestões de otimização para aplicação imediata.
Log in to the RDS instance no console do Data Management (DMS).
Clique com o botão direito na instância RDS e escolha Performance > One-click diagnosis.
No console do DAS, revise as sessões em tempo real, os deadlocks e as consultas lentas.
Clique no link de detalhes do módulo relevante e aplique as sugestões de otimização.
Encerrar sessões anômalas
Se não houver um relatório de diagnóstico disponível ou se as alterações de otimização não puderem ser aplicadas imediatamente, encerre as sessões que geram leituras físicas excessivas. Na visualização de sessões do DAS, foque nas sessões em que Physical_sync_read ou Physical_async_read apresenta um valor alto — ambas as métricas indicam leituras intensas no disco físico.
Encerrar sessões oferece um alívio temporário. Interrompa as consultas no nível da aplicação para evitar que elas se reconectem e sejam executadas novamente.
Encerrar sessões no DMS
Log in to the RDS instance no console do Data Management (DMS).
Clique com o botão direito na instância RDS e escolha Performance > Instance session.
Selecione a sessão que deseja encerrar e clique em Kill Selected.
Encerrar sessões pela linha de comando do MySQL
Os comandos SHOW PROCESSLIST e SHOW FULL PROCESSLIST retornam um snapshot das sessões ativas no momento em que você os executa. Execute-os várias vezes para identificar sessões constantemente ativas ou que consomem mais recursos.
Conecte-se à instância RDS usando a ferramenta de linha de comando do MySQL.
-
Identifique as sessões anômalas:
Execute
SHOW PROCESSLIST;para obter uma visualização resumida.
Se houver muitas sessões ativas, execute
SHOW FULL PROCESSLIST;e visualize o texto completo da consulta.
-
Encerre as sessões anômalas. Substitua
[$ID]pelo valor da coluna ID.kill [$ID]
Se você não conseguir se conectar à instância
Quando o número de conexões atinge o limite máximo, tanto o DMS quanto a ferramenta de linha de comando do MySQL não conseguem se conectar. Defina o parâmetro wait_timeout com um valor baixo — como 60 — no console do ApsaraDB RDS. Isso faz com que a instância feche automaticamente as conexões que ficarem ociosas por mais de 60 segundos, liberando slots de conexão para que você possa fazer login e iniciar o diagnóstico.
Escopo de aplicação
ApsaraDB RDS for MySQL