# Como corrigir o erro “Too many connections” no MySQL/MariaDB

O erro “Too many connections” ocorre quando o número máximo de conexões simultâneas do servidor é excedido. Cada sessão de cliente ativa utiliza uma conexão, e, uma vez atingido o limite, não é possível estabelecer conexões adicionais. As causas comuns incluem consultas paralelas excessivas, conexões deixadas abertas ou um valor de `max_connections` configurado como muito baixo no servidor.

## Como ocorre o erro de conexões simultâneas no MySQL/MariaDB

Um banco de dados só pode lidar com um número limitado de requisições simultaneamente. Se este **valor máximo for excedido**, MySQL ou [MariaDB](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/banco-de-dados-mariadb/) exibirá a mensagem de erro “Too many connections”. Isso ocorre, por exemplo, quando um script [PHP](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/criar-sites/aprenda-php-nosso-tutorial-abrangente-sobre-php-para-iniciantes/) tenta estabelecer muitas conexões simultâneas com o banco de dados relacional. Da mesma forma, se você tiver um aplicativo web que utiliza um banco de dados MySQL, o erro pode aparecer durante uma **demanda muito alta**.

## Como corrigir o erro “Too many connections” no MySQL ou no MariaDB

Existem várias abordagens para corrigir o erro “Too many connections” no MySQL. Isso vai depender do problema em questão. As soluções mais comuns são explicadas em detalhes abaixo.

### Solução 1: escolher um novo número máximo de conexões

A **variável do sistema** `max_connections` determina o número de conexões que o MySQL/MariaDB aceitará. O valor padrão é de 151 conexões, permitindo 150 conexões regulares mais uma da conta **SUPER**. SUPER é um privilégio do MySQL que concede direitos administrativos ao usuário.

Comece decidindo o novo valor máximo que deseja definir para `max_connections`. Ao aumentar o número de conexões MySQL/MariaDB, tenha em mente vários fatores importantes:

- A quantidade de memória RAM disponível
- Quanto de RAM cada conexão consome (consultas simples requerem menos RAM do que as complexas)
- O tempo de resposta aceitável

De acordo com a [documentação do MySQL](https://dev.mysql.com/doc/refman/8.0/en/too-many-connections.html "MySQL Documentation"), a maioria dos sistemas Linux pode lidar sem problemas com **500 a 1.000 conexões**.

#### Ajustar permanentemente `max_connections`

Para ajustar permanentemente a variável `max_connections`, você precisa atualizar o arquivo `my.cnf` ou `my.ini`.

Abra o arquivo /etc/my.cnf para edição com o comando:

```none
sudo nano /etc/my.cnf
```

Logo abaixo da primeira linha, você verá a seguinte entrada:

```none
[mysqld]
```

Adicione uma nova entrada:

```plaintext
max_connections=[novo número máximo desejado]
```

#### Ajustar temporariamente `max_connections`

Para mudar temporariamente o número máximo de conexões para a sessão atual, você pode executar o seguinte comando no console do MySQL:

```none
SET GLOBAL max_connections = [novo número máximo desejado];
```

O ajuste permanece em vigor até que o servidor SQL seja reiniciado.

### Solução 2: fechar conexões não utilizadas

Uma causa frequente do erro “Too many connections” é quando as aplicações falham em fechar adequadamente as conexões com o banco de dados. Cada conexão aberta ocupa um slot no MySQL ou MariaDB, e se as conexões não forem liberadas, o servidor pode rapidamente atingir o limite máximo.

No PHP, sempre chame `mysqli_close($connection)` quando suas consultas estiverem concluídas. No Python, use `connection.close()`, e no Node.js, chame `connection.end()`.

Uma prática recomendada é usar **pool de conexões**. Com essa abordagem, um número fixo de conexões com o banco de dados é criado, gerenciado centralmente e reutilizado, em vez de abrir uma nova conexão para cada solicitação. Isso ajuda a reduzir a carga do servidor e melhora o desempenho, já que estabelecer e fechar conexões consome tempo extra.

### Solução 3: ajustar o tempo limite de conexão

Outra forma eficaz de prevenir o erro é limitando o tempo que conexões inativas podem permanecer abertas. Por padrão, o MySQL/MariaDB mantém as conexões ociosas ativas por um bom tempo, mesmo que não estejam mais executando consultas. Cada uma dessas conexões ociosas ainda consome um slot.

As variáveis de sistema `wait_timeout` e `interactive_timeout` controlam por quanto tempo as conexões inativas permanecem abertas antes que o servidor as feche automaticamente. `wait_timeout` se aplica a conexões padrão, enquanto `interactive_timeout` é usado para clientes interativos, como o console do MySQL. Reduzir esses valores ajuda a liberar conexões “pendentes” mais rapidamente.

#### Ajustar permanentemente `wait_timeout` e `interactive_timeout`

O ajuste pode ser feito permanentemente no arquivo de configuração `my.cnf` ou `my.ini`. Para isso, abra-o e procure a seguinte entrada:

```none
[mysqld]
```

Insira as seguintes linhas:

```none
wait_timeout=120
interactive_timeout=120
```

Isso garante que as conexões inativas não bloqueiem recursos desnecessariamente por muito tempo.

#### Ajustar temporariamente `wait_timeout` e `interactive_timeout`

Este ajuste também pode ser feito temporariamente por meio do MySQL. A alteração será aplicada apenas à conexão atual e os valores serão redefinidos após reiniciar o servidor SQL.

```none
SET GLOBAL wait_timeout=120;
SET GLOBAL interactive_timeout=120;
```


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/resolva-o-erro-too-many-connections-no-mysql-mariadb/](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/resolva-o-erro-too-many-connections-no-mysql-mariadb/) for AI/LLM consumption.