segunda-feira, 5 de março de 2012

Error No. 1040 - Too many connections no MySQL

Error!
Salve salve papeiros.

Hoje ao tentar acessar um servidor de banco de dados, recebi a seguinte mensagem de erro:

Erro: Too many connections

Mas do que se trata este erro? Vejamos o que nos diz a documentação do MySQL:

"A.2.6. Erro: Too many connections
Se você obter o erro Too many connections quando vacê tentar se conectar ao MySQL, isto significa que já existe max_connections clientes conectados ao servidor mysqld.

Se você precisar de mais conexões do que o padrão (100), então você deve reiniciar o mysqld com um valor maior para a variável max_connections.

Note que atualmente o mysqld permite que (max_connections+1) clientes se conectem. A última conexão é reservada para um usuário com o privilégio SUPER. Ao não dar este privilégio a usuários normais (eles não precisam dele), um administrador com este privilégio pode logar e utilizar SHOW PROCESSLIST para descobrir o que pode estar errado. See Secção 4.6.8.6, “SHOW PROCESSLIST”.

O número máximo de conexões MySQL depende de quão boa é a biblioteca de threads na dada plataforma. Linux ou Solaris devem estar aptos a suportar 500-1000 conexões simultâneas, dependendo de quanta RAM você tem e do que o cliente está fazendo."

Por padrão o max_connections do arquivo my.cnf é 100, mas pode ser alterado:
 set-variable = max_connections=100  

Quando falamos em conexão, estamos falando em um comando que é enviado ao banco de dados e que após ser realizado a conexão aberta deve ser fechada, este controle de conexões é feito pelo pool de conexões da aplicação (Ex: Spring).

O padrão adotado pelo banco de dados (100) já suporta sistemas de grande porte, pois é muito difícil que tenhamos mais de 100 usuários realizando alguma operação no mesmo momento, mas, mesmo que seja no mesmo momento (Algo meio improvável) alguma conexão irá se abrir primeiro, e após se fechar a próxima chamada será realizada.

Para se aprofundar mais no assunto, pesquise também por max_user_connections, wait_timeout e max_connect_errors.

Espero mais uma vez ter sudo útil, abraços.

Material de referência/fonte:
http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html
http://www.devdb.com.br/banco-de-dados/mysql/resolvendo-e-contornando-o-erro-too-many-connections-no-mysql

Clique aqui e veja todas as matérias sobre MySQL

Nenhum comentário:

Postar um comentário