Como corrixir o erro MySQL: Demasiadas conexións

Introdución ao erro MySQL: Demasiadas conexións

Cando tes unha aplicación web (sitio, blog, foro, etc.) moi demandada, é dicir, que visita un gran número de usuarios, isto tradúcese nun aumento do consumo no servidor. Se a devandita aplicación web usa unha base de datos MySQL e as consultas son moitas (debido a unha mala programación da web ou por moitos usuarios que a utilizan), existe a posibilidade de que MySQL mostre este erro:

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

Que significa o erro MySQL: Demasiadas conexións?

Significa que están chegando demasiadas solicitudes a MySQL, máis do que pode aceptar, máis do que pode facer cola ou esperar.

Como resolvelo?

Sinxelo, debemos aumentar o límite máximo de solicitudes (conexións) que admite MySQL.

Dareiche dúas opcións para solucionar este problema:

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

nano /etc/mysql/my.cfg

Nela colocamos o seguinte debaixo de onde di [mysql]:

max_connections = 500 max_user_connections = 500

Isto aumentará o número máximo de conexións de 100 (que é o predeterminado) a 500.

Gardamos e saímos, entón reiniciamos o servizo MySQL e xa está. Este cambio é permanente.

2. Outra forma de resolver este problema é cambiar o límite máximo igual, pero a través dunha consulta MySQL.

Primeiro imos amosar o límite actual:

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

Isto amosaranos algo así:

+ ----------------- + ------- + | Nome_variable | Valor | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +

Noutras palabras, o límite actual é de 151 conexións. Ben, aumentámolo a 500 mediante unha consulta:

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

Listo

O problema deste xeito é que cando se reinicia o servizo, esta configuración pérdese.

Para fornecer este detalle, pode facer un script bash que verifique cada X vez, ou incluso engadir a liña ao bloque de inicio ou reinicio do daemon 😉

Pero entón, por que quero saber esta segunda opción? ... ben, iso era o que dicía. Pero hai un mes un servidor Ubuntu ignorou o método número 2, así que ... en casos extremos de SO parvo, temos esta segunda opción que funciona igual de ben 😉


O contido do artigo adhírese aos nosos principios de ética editorial. Para informar dun erro faga clic en aquí.

6 comentarios, deixa os teus

Deixa o teu comentario

Enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados con *

*

*

  1. Responsable dos datos: Miguel Ángel Gatón
  2. Finalidade dos datos: controlar SPAM, xestión de comentarios.
  3. Lexitimación: o seu consentimento
  4. Comunicación dos datos: os datos non serán comunicados a terceiros salvo obrigación legal.
  5. Almacenamento de datos: base de datos aloxada por Occentus Networks (UE)
  6. Dereitos: en calquera momento pode limitar, recuperar e eliminar a súa información.

  1.   nexo dixo

    Boa publicación, MySql ... usan moito en FreeBSD, ... .KZKG ^ Gaara?, ... Sería bo que fixeras unha publicación sobre como instalar e configurar MySql en FreeBSD como: SSH (secure - shell), SSH (vía web), SFTP (Protocolo de transferencia de ficheiros SSH), Apache - Extensións PHP- MySql, PHP5 e PhpSysInfo.

    1.    KZKG ^ Gaara dixo

      Para iso tería que instalar FreeBSD, non creo que teña tempo agora, simplemente cambiei de traballo e teño moitas novas responsabilidades 🙁

  2.   Saul dixo

    Hai pouco tiven que facer algo parecido para un proxecto con nodejs. No meu caso aumentou a 250 e xa foi suficiente, polo de agora estou ben. Grazas pola información

  3.   Francisco dixo

    Ola, poderíasme axudar a ingresar /etc/mysql/my.cfg?

    Teño un VPS, pero non podo entrar con PUTTY.

    Saúdos.

  4.   cebo dixo

    Para solucionar o problema da opción 1.- Opción comentada e manter os cambios ao reiniciar o servidor, o ficheiro debe editarse segundo a versión:

    ////////////////////////////////////////////////////////// //////////////////////
    // Cambio o directorio en Ubuntu 16.04 //////////////////////////
    ////////////////////////////////////////////////////////// //////////////////////
    vi /etc/mysql/mysql.conf.d/mysqld.cnf

    ////////////////////////////////////////////////////////// //////////////////////
    // Cambio o directorio en Ubuntu 15.04 //////////////////////////
    ////////////////////////////////////////////////////////// //////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////////////////// //////////////////////
    // Cambio o directorio en Ubuntu antigo //////////////////////////
    ////////////////////////////////////////////////////////// //////////////////////

    vi /etc/mysql/my.cnf

    ////////////////////////////////////////////////////////// //////////////////////
    // engade esta liña baixo a etiqueta [mysqld] ou [mysql] //
    // A continuación, reinicie o servidor //
    ////////////////////////////////////////////////////////// //////////////////////
    conexións_máximas = 500

  5.   indignado dixo

    O tutorial desde cero en ningún momento indica como cambialo