io/socket/sql/client_connection
O evento io/socket/sql/client_connection
ocorre quando um segmento está em processo de manipulação de uma nova conexão.
Versões compatíveis do mecanismo
Essas informações de eventos de espera têm suporte nas seguintes versões do mecanismo:
-
Aurora MySQL versão 2, até 2.09.2
-
Aurora MySQL versão 1, até 1.23.1
Contexto
O evento io/socket/sql/client_connection
indica que o mysqld está ocupado criando threads para lidar com novas conexões de cliente recebidas. Nesse cenário, o processamento do atendimento a novas solicitações de conexão de clientes diminui enquanto as conexões aguardam a atribuição do thread. Para mais informações, consulte Servidor MySQL (mysqld).
Possíveis causas do maior número de esperas
Quando esse evento aparece mais que o normal, possivelmente indicando um problema de performance, as causas típicas incluem:
-
Há um aumento repentino nas novas conexões de usuário da aplicação para a sua instância do Amazon RDS.
-
Sua instância de banco de dados não consegue processar novas conexões porque a rede, a CPU ou a memória está sendo limitada.
Ações
Se io/socket/sql/client_connection
domina a atividade do banco de dados, isso não indica necessariamente um problema de performance. Em um banco de dados não ocioso, um evento de espera está sempre na parte superior. Reaja apenas quando a performance piorar. Recomenda-se ações distintas, dependendo dos motivos do evento de espera.
Tópicos
- Identificar as sessões e consultas problemáticas
- Siga as práticas recomendadas para o gerenciamento de conexões
- Aumentar a escala da sua instância na vertical se os recursos estiverem sendo limitados
- Conferir os principais hosts e usuários
- Consultar as tabelas performance_schema
- Verificar os estados de threads das suas consultas
- Auditar suas solicitações e consultas
- Agrupar suas conexões de banco de dados
Identificar as sessões e consultas problemáticas
Se a sua instância de banco de dados estiver enfrentando um gargalo, a primeira tarefa é encontrar as sessões e consultas responsáveis. Leia esta útil postagem de blog sobre como Analisar workloads do Amazon Aurora MySQL com o Performance Insights
Para identificar sessões e consultas que estão causam um gargalo
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No painel de navegação, escolha Performance Insights.
-
Escolha a instância de banco de dados.
-
Em Database load (Carga de banco de dados), escolha Slice by wait (Segmentar por espera).
-
Na parte inferior da página, escolha Top SQL (SQL principal).
As consultas na parte superior da lista estão causando a maior carga no banco de dados.
Siga as práticas recomendadas para o gerenciamento de conexões
Para gerenciar suas conexões, considere as seguintes estratégias:
-
Use o agrupamento de conexões.
É possível aumentar gradualmente o número de conexões conforme necessário. Para obter mais informações, consulte o whitepaper Amazon Aurora MySQL Database Administrator’s Handbook
. -
Use um nó de leitor para redistribuir o tráfego somente leitura.
Para obter mais informações, consulte Réplicas do Aurora e Gerenciamento de conexões do Amazon Aurora.
Aumentar a escala da sua instância na vertical se os recursos estiverem sendo limitados
Procure exemplos de controle de utilização nos seguintes recursos:
-
CPU
Verifique suas métricas do Amazon CloudWatch com relação ao alto uso da CPU.
-
Rede
Verifique se há um aumento no valor das métricas
network receive throughput
enetwork transmit throughput
do CloudWatch. Se sua instância tiver atingido o limite de largura de banda da rede da classe de instância, considere aumentar a escala vertical da sua instância do RDS para um tipo de classe de instância superior. Para mais informações, consulte Classes de instância de banco de dados Aurora. -
Memória liberável
Verifique se há uma queda na métrica
FreeableMemory
do CloudWatch. Além disso, considere habilitar o Monitoramento aprimorado. Para mais informações, consulte Monitorar métricas do SO com o monitoramento avançado.
Conferir os principais hosts e usuários
Use o Performance Insights para verificar os principais hosts e usuários. Para mais informações, consulte Análise de métricas usando o painel do Performance Insights.
Consultar as tabelas performance_schema
Para obter uma contagem precisa das conexões atuais e totais, consulte as tabelas performance_schema
. Com essa técnica, você identifica o usuário ou host de origem responsável por criar um alto número de conexões. Por exemplo, consulte as tabelas performance_schema
da seguinte maneira.
SELECT * FROM performance_schema.accounts; SELECT * FROM performance_schema.users; SELECT * FROM performance_schema.hosts;
Verificar os estados de threads das suas consultas
Se o problema de performance for contínuo, verifique os estados de thread das suas consultas. No cliente mysql
, emita o comando a seguir.
show processlist;
Auditar suas solicitações e consultas
Para verificar a natureza das solicitações e consultas de contas de usuários, use o recurso de Auditoria avançada do Aurora MySQL. Para aprender a habilitar a auditoria, consulte Como utilizar a auditoria avançada em um cluster de banco de dados do Amazon Aurora MySQL.
Agrupar suas conexões de banco de dados
Considere utilizar o Amazon RDS Proxy para o gerenciamento das conexões. Com o RDS Proxy, você pode permitir que suas aplicações agrupem e compartilhem conexões de banco de dados para melhorar sua capacidade de escala. O proxy do RDS torna as aplicações mais resilientes a falhas de banco de dados conectando-se automaticamente a uma instância de banco de dados em espera e preservando as conexões de aplicações. Para mais informações, consulte Uso do proxy do Amazon RDS.