Como corrigir o erro do MySQL: Muitas conexões

Introdução ao erro do MySQL: Muitas conexões

Quando você tem uma aplicação web (site, blog, fórum, etc.) que está em alta demanda, ou seja, um grande número de usuários a visita, isso se traduz em aumento do consumo no servidor. Se o referido aplicativo da web usa um banco de dados MySQL e as consultas são realmente muitas (devido à má programação da web ou por muitos usuários que usam a web), existe a possibilidade de que o MySQL mostre este erro:

mysqli_connect(): (HY000/1040): Too many connections

O que significa o erro MySQL: Muitas conexões?

Isso significa que muitas solicitações estão chegando ao MySQL, mais do que ele pode aceitar, mais do que pode enfileirar ou esperar.

Como resolver isso?

Simples, devemos aumentar o limite máximo de requisições (conexões) que o MySQL suporta.

Vou lhe dar duas opções para corrigir esse problema:

1. Editamos o arquivo /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

Nele colocamos o seguinte onde diz [mysql]:

max_connections = 500 max_user_connections = 500

Isso aumentará o número máximo de conexões de 100 (que é o padrão) para 500.

Nós salvamos e saímos, então reiniciamos o serviço MySQL e é isso. Essa mudança é permanente.

2. Outra forma de resolver esse problema é alterar o limite máximo para igual, mas por meio de uma consulta MySQL.

Vamos primeiro mostrar o limite atual:

mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'

Isso vai nos mostrar algo assim:

+ ----------------- + ------- + | Variable_name | Valor | + ----------------- + ------- + | max_connections | 151 + ----------------- + ------- +

Em outras palavras, o limite atual é de 151 conexões, bem, vamos aumentá-lo para 500 por meio de uma consulta:

mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'

Pronto!

O problema dessa forma é que quando o serviço é reiniciado, essa configuração é perdida.

Para fornecer este detalhe, você pode fazer um script bash que verifica cada vez que X, ou mesmo adicionar a linha ao bloco de início ou reinicialização do daemon 😉

Mas então por que eu quero saber esta segunda opção? ... bem, é o que eu costumava dizer. Mas um mês atrás, um servidor Ubuntu ignorou o método nº 2, então ... em casos extremos de sistema operacional bobo, temos esta segunda opção que funciona tão bem quanto


6 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   nex dito

    Bom post, MySql… eles usam muito no FreeBSD,… .KZKG ^ Gaara?,… Seria bom se você fizesse um post, sobre como instalar e configurar o MySql no FreeBSD como: SSH (secure - shell), SSH (via Web), SFTP (SSH-File Transfer Protocol), Apache - extensões PHP- MySql, PHP5 e PhpSysInfo.

    1.    KZKG ^ Gaara dito

      Para isso eu teria que instalar o FreeBSD, não acho que tenho tempo agora, acabei de mudar de emprego e tenho muitas responsabilidades novas 🙁

  2.   Saul dito

    Recentemente, tive que fazer algo semelhante para um projeto com nodejs. No meu caso aumentou para 250 e isso foi o suficiente, por enquanto estou bem. Obrigado pela dica

  3.   Francisco dito

    Olá, você poderia me ajudar a entrar em /etc/mysql/my.cfg?

    Eu tenho um VPS, mas não consigo entrar com PUTTY.

    Saudações.

  4.   isca dito

    Para resolver o problema da Opção 1.- Opção comentada, e manter as alterações ao reiniciar o servidor, o arquivo deve ser editado de acordo com a versão:

    ////////////////////////////////////////////////// ////////////////////
    // Eu mudo o diretório no Ubuntu 16.04 ////////////////////////
    ////////////////////////////////////////////////// ////////////////////
    Eu vi /etc/mysql/mysql.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // Eu mudo o diretório no Ubuntu 15.04 ////////////////////////
    ////////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // Eu mudo o diretório no Ubuntu antigo //////////////////////////
    ////////////////////////////////////////////////// ////////////////////

    Eu vi /etc/mysql/my.cnf

    ////////////////////////////////////////////////// ////////////////////
    // adicione esta linha sob a tag [mysqld] ou [mysql] //
    // Em seguida, reinicie o servidor //
    ////////////////////////////////////////////////// ////////////////////
    max_conexões = 500

  5.   incensado dito

    Tutorial do zero em nenhum momento lhe diz como alterá-lo