Com arreglar l'error de MySQL: Too Many Connections

Introducció a l'error de MySQL: Too Many Connections

Quan es té una aplicació web (lloc, bloc, fòrum, etc) que té alta demanda, és a dir, que gran nombre d'usuaris visita això es tradueix en increment de consum al servidor. Si aquesta app web fa servir una base de dades MySQL i les consultes són realment moltes (per mala programació del web o per molts usuaris utilitzant la web), Hi ha la possibilitat que MySQL mostri aquest error:

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

¿Què significa l'error de MySQL: Too Many Connections?

Vol dir que a l'MySQL estan arribant massa peticions, més de les que pot acceptar, més de les que pot posar en cua o en espera.

Com solucionar-ho?

Simple, hem d'augmentar el límit màxim de peticions (connexions) que MySQL admet.

Els donaré dues opcions per solucionar aquest problema:

1. Editem l'arxiu /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

En ell posem el següent sota on diu [mysql]:

max_connections = 500 max_user_connections = 500

Això augmentarà el nombre màxim de connexions de 100 (que és el per defecte) a 500.

Guardem i vam sortir, llavors reiniciem el servei MySQL i llest. Aquest canvi és permanent.

2. Una altra forma de resoldre aquest problema és canviant el límit màxim igual, però mitjançant una consulta MySQL.

Primer anem a mostrar el límit actual:

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

Això ens mostrarà alguna cosa com això:

+ ----------------- + ------- + | Variable_name | Value | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +

O sigui, que el límit actual són 151 connexions, bé, anem a pujar-lo a 500 per mitjà d'una consulta:

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

A punt!

El problema d'aquesta manera, és que quan es torna a arrencar el servei, es perd aquesta configuració.

Per suplir aquest detall es pot fer un script bash que cada X temps verifiqui, o fins i tot afegir la línia a el bloc de start o restart de el dimoni 😉

Però llavors per què vull conèixer aquesta 2a opció? ... bé, això mateix deia jo. Però fa un mes un Ubuntu Server feia cas omís a l'mètode No.1, de manera que ... en casos extrems d'OS majaderos, tenim aquesta 2a opció que funciona igual de bé 😉


6 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   annex va dir

    Bon post, el MySql ... utilitzen bastant en FreeBSD, ... .KZKG ^ Gaara?, ... seria bo que facis un post, de com instal·lar i configurar MySql en FreeBSD com: SSH (secure - shell), SSH (via web), SFTP (SSH-File Transfer Protocol), Apache - PHP- MySql, PHP5 i Extensions PhpSysInfo.

    1.    KZKG ^ Gaara va dir

      Per a això hauria de instal·lar FreeBSD, no crec que disposi de el temps ara mateix, recentment vaig canviar de treball i tinc moltes responsabilitats noves 🙁

  2.   Saül va dir

    Recentment em va tocar fer alguna cosa similar per a un projectes amb nodejs. En el meu cas s'incrementi a 250 i amb això em va ser suficient, per ara em va bé. Gràcies per la dada

  3.   Francisco va dir

    Hola, em podries ajudar a com entrar a com entrar a /etc/mysql/my.cfg?

    Tinc un VPS, però no aconsegueixo poder entrar amb PUTTY.

    Salutacions.

  4.   carnassa va dir

    Per solucionar el problema de l'1.- Opció comentada, i conservi els canvis a l'reiniciar el servidor, s'ha d'editar el fitxer segons versió:

    ////////////////////////////////////////////////// ////////////////////
    // Canvi directori en Ubuntu 16.04 //////////////////////
    ////////////////////////////////////////////////// ////////////////////
    vaig veure /etc/mysql/mysql.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // Canvi directori en Ubuntu 15.04 //////////////////////
    ////////////////////////////////////////////////// ////////////////////
    vaig veure /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // Canvi directori en Ubuntu old //////////////////////
    ////////////////////////////////////////////////// ////////////////////

    vaig veure /etc/mysql/my.cnf

    ////////////////////////////////////////////////// ////////////////////
    // afegir aquesta línia sota de l'etiqueta [mysqld] o [mysql] //
    // Després reiniciar el server //
    ////////////////////////////////////////////////// ////////////////////
    max_connections = 500

  5.   indignat va dir

    Tutorial de zero en cap moment et diu com canviar-