io/socket/sql/client_connection - Amazon Aurora

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ões 2 e 3

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 obter 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.

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
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação, escolha Performance Insights.

  3. Escolha a instância de banco de dados.

  4. Em Database load (Carga de banco de dados), escolha Slice by wait (Segmentar por espera).

  5. 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:

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 e network 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 obter 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 obter 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 obter 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 obter mais informações, consulte Usar o Amazon RDS Proxy para o Aurora.