Todos os produtos
Search
Central de documentação

ApsaraDB RDS:O que fazer se o número de conexões de uma instância ApsaraDB RDS for MySQL atingir o limite máximo?

Última atualização: Jun 26, 2026

Quando o número de conexões de uma instância RDS for MySQL atinge o máximo, todos os clientes — incluindo o Data Management (DMS) e outras ferramentas — recebem a mensagem de erro ERROR 1040 (HY000): Too many connections. Este tópico descreve como diagnosticar a causa raiz e resolver o problema.

Diagnosticar o problema

Execute as consultas a seguir para verificar o status atual das conexões:

-- Check the configured maximum connections
SELECT @@max_connections;

-- Check the number of currently connected clients
SHOW STATUS WHERE `variable_name` = 'Threads_connected';

Se o valor de Threads_connected estiver igual ou próximo de max_connections, as conexões estão esgotadas.

Para identificar se o problema decorre de conexões ociosas ou ativas, acesse a página Monitoring and Alerts no console do ApsaraDB RDS e verifique a métrica Session. Analise o valor de mysql.active_session para comparar a quantidade de sessões ativas e ociosas.

Resolver problemas causados por excesso de conexões ociosas

O MySQL utiliza uma thread por conexão. Mesmo as conexões ociosas mantêm uma thread dedicado no processo do MySQL, o que consome memória e aumenta a sobrecarga de troca de contexto. Um grande volume de conexões ociosas pode esgotar o limite de conexões sem carga de trabalho ativa.

As causas mais comuns para o acúmulo excessivo de conexões ociosas incluem:

  • Aplicações com conexões persistentes sem pool de conexões: Por exemplo, uma aplicação Java que usa conexões persistentes, mas não possui um pool configurado. Se você especificar um número inicial alto de conexões na inicialização, a aplicação abrirá muitas conexões ociosas com a instância RDS imediatamente.

  • Aplicações com conexões de curta duração que não fecham as conexões: Como uma aplicação PHP que utiliza conexões temporárias, mas não as fecha explicitamente após a conclusão das consultas.

Etapa 1: Encerrar sessões ociosas imediatamente

Encerre as sessões ociosas usando um dos métodos abaixo:

  • Console do ApsaraDB RDS: Acesse a página Session e utilize o gerenciamento de sessões para finalizar as ociosas.

  • DMS: Use o recurso de gerenciamento de sessões do DMS para identificar e encerrar sessões inativas.

  • CLI do MySQL: Execute o comando kill <session_id> para terminar uma sessão específica.

Etapa 2: Reduzir o tempo limite de conexão ociosa

A instância RDS encerra automaticamente as conexões ociosas após um período de tempo limite configurado:

Parâmetro

Valor padrão

Descrição

wait_timeout

86.400 segundos (24 horas)

Tempo limite para conexões em modo não interativo

interactive_timeout

7.200 segundos (2 horas)

Tempo limite para conexões em modo interativo

Os valores padrão são elevados. Reduzi-los faz com que a instância recupere conexões ociosas mais rapidamente. Para alterar esses parâmetros, acesse a página Parameters no console do ApsaraDB RDS.

As alterações nos parâmetros wait_timeout e interactive_timeout aplicam-se apenas a novas conexões estabelecidas após a mudança. As conexões existentes mantêm seus valores originais de tempo limite.

Na maioria dos casos, as aplicações conectam-se às instâncias RDS em modo não interativo. Para determinar o modo de conexão da sua aplicação, verifique a configuração de conexão correspondente. Em aplicações PHP, especifique a constante MYSQL_CLIENT_INTERACTIVE na função mysql_connect() para ativar o modo interativo.

Etapa 3: Corrigir vazamentos de conexão na aplicação

Conexões ociosas frequentemente se acumulam porque a aplicação não as fecha explicitamente após concluir as consultas. Aplicações PHP com conexões de curta duração, por exemplo, às vezes omitem a etapa de fechamento e deixam as conexões abertas até que atinjam o tempo limite.

Revise o código da sua aplicação para garantir o fechamento explícito das conexões após cada consulta ou operação.

Resolver problemas causados por excesso de conexões ativas

Um grande número de conexões ativas geralmente indica um gargalo de desempenho que causa o enfileiramento de consultas. As causas comuns incluem:

  • Alta utilização de CPU

  • Consultas lentas

  • Esperas por locks do InnoDB ou por locks de metadados

  • Alta utilização de IOPS

Identifique o gargalo subjacente e trate-o diretamente:

Prevenir problemas de limite de conexão

Usar um pool de conexões (recomendado)

Um pool de conexões gerencia um conjunto fixo de conexões persistentes compartilhadas entre a aplicação, em vez de abrir uma nova conexão para cada solicitação. Essa é a solução de longo prazo mais eficaz para evitar o esgotamento de conexões, sendo especialmente importante para aplicações que abrem e fecham grandes quantidades de conexões de curta duração — como funções serverless ou aplicações PHP.

Ao configurar o tamanho máximo do pool, defina um valor menor que o limite de conexões da instância. Reserve pelo menos 10 conexões para o DMS e outras operações de gerenciamento.

Por exemplo, se sua instância suporta 500 conexões, configure o máximo do pool de conexões como 490.

Ativar detecção e reutilização de conexões

Ative a detecção de conexões no seu pool para remover automaticamente as obsoletas. Habilite também o recurso de reutilização para que o pool aproveite as conexões existentes em vez de abrir novas desnecessariamente.

Aumentar o tipo da instância

Se a demanda por conexões exceder consistentemente o limite atual, faça upgrade para um tipo de instância maior que suporte mais conexões.

Tópicos relacionados