Introducere în eroarea MySQL: Prea multe conexiuni
Când aveți o aplicație web (site, blog, forum etc.) care are o cerere mare, adică este vizitată de un număr mare de utilizatori, acest lucru se traduce printr-un consum crescut de resurse ale serverului. Dacă această aplicație web utilizează o bază de date MySQL și interogările sunt foarte numeroase ( din cauza programării deficitare a site-ului web sau a unui volum mare de utilizatori ), MySQL poate afișa această eroare:
mysqli_connect(): (HY000/1040): Too many connections
Ce înseamnă eroarea MySQL: Prea multe conexiuni?
Înseamnă că prea multe solicitări vin la MySQL, mai mult decât poate accepta, mai mult decât poate face coadă sau aștepta.
Cum să o rezolvi?
Simplu, trebuie să creștem limita maximă de cereri (conexiuni) acceptate de MySQL.
Vă voi oferi două opțiuni pentru a remedia această problemă:
1. Edităm fișierul /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
În el, punem următoarele sub unde scrie [mysql]:
max_connections = 500 max_user_connections = 500
Aceasta va crește numărul maxim de conexiuni de la 100 (care este implicit) la 500.
Salvăm și ieșim, apoi repornim serviciul MySQL și gata. Această schimbare este permanentă.
2. O altă modalitate de a rezolva această problemă este prin modificarea limitei maxime, dar utilizând o interogare MySQL.
Să arătăm mai întâi limita actuală:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Acest lucru ne va arăta așa ceva:
+ ----------------- + ------- + | Numele_variabil | Valoare | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
Cu alte cuvinte, limita actuală este de 151 conexiuni, ei bine, hai să o ridicăm la 500 printr-o interogare:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Gata!
Problema în acest fel este că atunci când serviciul este repornit, această configurație se pierde.
Pentru a compensa acest detaliu, puteți crea un script bash care verifică fiecare X perioadă de timp sau chiar adăugați linia la blocul de pornire sau repornire al demonului
Dar atunci de ce vreau să știu această a doua opțiune? … ei bine, asta am spus. Dar acum o lună, un server Ubuntu a ignorat metoda nr. 2, așa că... în cazuri extreme de OS stupid, avem această a doua opțiune care funcționează la fel de bine