Cum se remediază eroarea MySQL: Prea multe conexiuni

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 


Adăugați ca sursă preferată în Google