Limites de conexão no MySQL

Ola pessoal,

Inaugurando 2015, vamos tratar sobre os limites de conexões no MySQL. Apesar de ser algo relativamente fácil, é importante saber o conceito, pois isso influi tanto no ambiente de trabalho ou na prova de certificação que encontrei em alguns dump’s.

Em qualquer aplicação Web ou correlatas, é comum identificar a falha de acesso com esta:

‘User XXX already has more than max_user_connections active connections’

Motivo: O usuário excedeu o limite de conexões  estabelecida no servidor.

Como identificar o limite? Abra o seu arquivo my.cnf ou my.ini e procure pelas variáveis:

Ou através de uma conexão com o MySQL, execute:

Ou seja, com base nos valores acima é possível apontar que o limite de conexões com o servidor ‘max_connections’ é de 1000, enquanto o limite de conexões de um único usuário ‘max_user_connections’ é de 200.

Um cenário que já me gerou dúvidas e é comum nos ambientes:

Uma vez que o ‘max_user_connections’ esteja com o valor 0, você passa para a instância que os usuários, independente da quantidade devem respeitar o limite de acessos ao servidor, que neste caso é 1000.

Caso um ou mais usuários alcancem o limite determinado no ‘max_connections’, será retornado o erro de Too many Connections nas próximas tentativas.

Outra forma de definir o limite de conexão a um usuário é através da tabela user do mysql, ou pelo grant, como podemos ver abaixo:

– Utilizando o grant, primeiro crio um usuário de teste e depois adiciono uma permissão qualquer referenciando no final o with max_user_connections 10:
1

Para consultar o valor do ‘max_user_connections’, basta realizar um select na mysql.user:

3

É possível alterar este valor direto na tabela user, onde a vantagem é que para o novo valor entrar em vigor, não é necessário reiniciar o servidor MySQL:

4
Caso você altere a variável max_user_connections no my.cnf ou my.ini, é necessário reiniciar o MySQL para a alteração entrar em vigor, já que ela não é uma variável dinâmica.

Mais informações:

http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html

 

É isso ai pessoal.

Dúvidas, criticas ou sugestões? Fiquem a vontade, todo retorno é construtivo 😀

Jose Wilson

4 Replies to “Limites de conexão no MySQL”

  1. Bom dia José Wilson. Muito boa a sua explicação sobre as variáveis max_connections e max_user_connections.
    Vi sua matéria porque estou procurando uma solução para o erro que está ocorrendo no site da minha empresa, veja se você já viu:
    “Database Error: Unable to connect to the database:Could not connect to MySQL;”
    Eu alterei os valores das variáveis max_connect_errors e max_user_connections pra ver se resolve o meu problema. Você acha que é isso mesmo ou tenho que alterar outra variável. Desde já agradeço.

    1. Ola Ricardo,

      Geralmente este erro vem com mais informações para analise, pode ser várias coisas como autenticação do usuário, permissão, falha de comunicação entre o servidor Web & Banco, entre outros.

      Você utiliza algum CMS como Joomla, WordPress? Se quiser, podemos conversar por e-mail e tentar identificar o erro.

      Email: jose.wilsonjunior@hotmail.com

      Obrigado pelo coment.

      Abraços.

    1. Ola Michel.

      Com certeza influi no numero de visitas sim, mas tudo depende do ambiente que você trabalha. Em ambientes shared host, o limite de conexão com o banco varia de 30 a 50 conexões simultâneas, logo se uma página do seu site faz uma consulta no banco de dados, ao atingir 51 visitas, a 51º terá o retorno de ‘max_user_connections’, caso as outras 50 conexões estejam em aberto.

      Ai vale um estudo, se estas conexões estão sendo encerradas de forma correta, se é necessário efetuar esta consulta, e se também é possível aumentar o limite de conexões simultâneas, caso o valor ‘x’ não esteja lhe atendendo.

      No servidor web, você consegue observar se o site esta retornando o erro de ‘max_user_connections’, basta verificar o acess.log ou error.log.

      Abraços.

Deixe uma resposta