Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Por que recebo um "Too many connections error" quando me conecto à minha instância MySQL do Amazon Aurora?
Quero me conectar à minha instância de banco de dados Amazon Aurora, edição compatível com MySQL, mas recebo o erro "Too many connections". Quero saber o valor máximo de conexão para minha instância de banco de dados e como posso alterá-lo.
Breve descrição
Quando o número de conexões do cliente excede o valor do parâmetro max_connections na instância de banco de dados, você recebe a mensagem de erro "Too many connections".
Para resolver esse problema, primeiro visualize todas as consultas e threads em execução na sua instância de banco de dados. Em seguida, ative o registro de log em sua instância de banco de dados. Revise as conexões existentes e encerre as conexões desnecessárias para reduzir a pressão da conexão. Além disso, ajuste seus parâmetros de conexão do MySQL. Se o problema continuar aparecendo, aumente o número máximo de conexões à sua instância de banco de dados.
Resolução
Veja todas as consultas e threads em execução na sua instância de banco de dados
Veja todas as consultas em execução na instância de banco de dados. Em seguida, verifique o valor Threads_Connected para ver o número de conexões que estão abertas. Para obter mais informações, consulte Threads_connected no site do MySQL.
Para o MySQL 5.7, execute o seguinte comando:
mysql> SELECT variable_value AS Threads_Connected FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE variable_name='threads_connected';
Para o MySQL 8.0, execute o seguinte comando:
mysql> SELECT variable_value AS Threads_Connected from performance_schema.global_status where VARIABLE_NAME = 'threads_connected';
Observação: Como o Aurora pode se conectar ao banco de dados a partir do usuário administrativo rdsadmin, o valor de threads_connected pode ser maior do que max_connections.
É uma prática recomendada usar threads_connected ou information_schema.processlist em vez de DatabaseConnections. Os parâmetros threads_connected e information_schema.processlist mostram as conexões do MySQL disponíveis que outros clientes usam.
O DatabaseConnections mostra o total de conexões TCP remotas, não as conexões inativas ou as sessões que o mecanismo de banco de dados cria para seus próprios fins. Como resultado, o valor do DatabaseConnections pode ser menor do que o número de operações executadas pelos threads do MySQL.
Ative o registro de log em sua instância de banco de dados
Para identificar a causa raiz do aumento do número de conexões, ative o registro de log em sua instância de banco de dados compatível com o Aurora MySQL. É possível ativar o general_log, slow_query_log ou os Parâmetros de log de Auditoria avançada.
Encerre conexões desnecessárias em sua instância de banco de dados
Use os comandos rds_kill e rds_kill_query para encerrar sessões de usuário e consultas desnecessárias em execução na sua instância de banco de dados.
Ajuste seus parâmetros de conexão do MySQL
Ajuste os seguintes parâmetros de conexão do MySQL para sua instância de banco de dados com base em seus valores preferidos:
- wait_timeout
- interactive_timeout
- net_read_timeout
- net_write_timeout
- max_execution_time
- max_connect_errors
- max_user_connections
Para obter mais informações sobre cada um dos parâmetros anteriores, consulte Server system variables [Variáveis do sistema do servidor] no site do MySQL.
Aumente o máximo de conexões à sua instância de banco de dados
Se você ainda tiver o problema depois de ajustar seus parâmetros de conexão, aumente o número máximo de conexões à sua instância de banco de dados. Para obter o valor atual de max_connections para sua instância de banco de dados, verifique o grupo de parâmetros que está anexado à sua instância de banco de dados. Ou execute a seguinte consulta:
select @@max_connections;
As instâncias de banco de dados compatíveis com Aurora MySQL e do Amazon Relational Database Service (Amazon RDS) para MySQL têm quantidades diferentes de sobrecarga de memória. O valor de max_connections pode ser diferente para instâncias de banco de dados compatíveis com Aurora MySQL e do Amazon RDS para MySQL que usam a mesma classe de instância.
Para determinar o número máximo de conexões para sua classe de instância, use a seguinte fórmula:
max_connections = GREATEST({log(17179869184/805306368)*45},{log(17179869184/8187281408)*1000})
Observação: O exemplo anterior é para uma instância db.r8g.large compatível com Aurora MySQL com 16 GiB de memória. O DBInstanceClassMemory é igual a 17179869184 bytes. O valor atual para max_connections é 1000.
Exemplo de resultado:
max_connections = GREATEST(195.56,1000) = 1000
Observação: O número máximo de conexões para essa classe de instância db.r8g.large com 16 GiB de memória é igual ao valor padrão.
Aumente o parâmetro max_connections
Observação: Não é uma prática recomendada aumentar o valor de max_connections além do valor padrão. Em vez disso, escale sua instância de banco de dados.
Se você não escalar sua instância de banco de dados e, em vez disso, optar por aumentar o valor de max_connections, conclua as seguintes etapas:
- Crie um grupo de parâmetros de instância de banco de dados personalizado.
- Associe o grupo de parâmetros à sua instância de banco de dados.
- Aumente o valor do parâmetro max_connections.
Observação: Uma interrupção não ocorre quando você define um valor maior para max_connections.
Aumente a escala de sua instância verticalmente
Se você exceder o valor máximo do parâmetro max_connections, é uma prática recomendada escalar sua classe de instância de banco de dados. Sua instância de banco de dados pode sofrer uma interrupção quando for escalada.
Use as práticas recomendadas para ajustar o parâmetro max_connections
Se você alterou as configurações do grupo de buffer e do cache de consulta do seu cluster de banco de dados, ajuste a cota de conexão para considerar o aumento ou a diminuição da memória disponível nas instâncias de banco de dados.
Defina o parâmetro max_connections um pouco mais alto do que o número máximo de conexões que você espera abrir em cada instância de banco de dados.
Se você ativou o Insights de performance, o Esquema de desempenho será ativado automaticamente. É uma prática recomendada usar o valor padrão de max_connections quando o Esquema de desempenho é ativado. As estruturas de memória do Esquema de desempenho são automaticamente dimensionadas com base na configuração do servidor.
Importante: O Insights de performance chegará ao fim de sua vida útil em 30 de novembro de 2025. É possível fazer o upgrade para o modo Avançado do Database Insights antes de 30 de novembro de 2025. Se você não fizer o upgrade, os clusters de banco de dados que usam o Insights de Performance usarão como padrão o modo Padrão do Database Insights. Somente o modo Avançado do Database Insights suportará planos de execução e análises sob demanda. Se seus clusters usarem como padrão o modo Padrão, talvez você não consiga usar esses atributos no console. Para ativar o modo Avançado, consulte Ativação do modo Avançado do Database Insights para Amazon RDS e Ativação do modo Avançado do Database Insights para Amazon Aurora.
Use o Amazon RDS Proxy
Se você ainda receber um erro, use o Amazon RDS Proxy para o Aurora para melhorar a capacidade de escalabilidade da sua aplicação.
Informações relacionadas
Como resolver o erro no Amazon RDS para MySQL ou na edição compatível do Aurora MySQL?"Got an error reading communication packets"
- Tópicos
- Database
- Tags
- Aurora MySQL
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há 10 meses
- feita há 9 meses
- feita há 8 meses
- feita há 3 meses