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é 😉
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.
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 🙁
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
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.
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
Tutorial de zero en cap moment et diu com canviar-