Uvod u pogrešku MySQL: Previše veza
Kada imate web aplikaciju (stranicu, blog, forum itd.) koja ima veliku potražnju, što znači da je posjećuje veliki broj korisnika, to se prevodi u povećanu potrošnju resursa poslužitelja. Ako ova web aplikacija koristi MySQL bazu podataka i upiti su vrlo brojni ( zbog lošeg programiranja web stranice ili velikog broja korisnika ), MySQL može prikazati ovu grešku:
mysqli_connect(): (HY000/1040): Too many connections
Što znači pogreška MySQL: Previše veza?
To znači da previše zahtjeva dolazi u MySQL, više nego što može prihvatiti, više nego što može staviti u red ili čekati.
Kako to riješiti?
Jednostavno, moramo povećati maksimalno ograničenje zahtjeva (veza) koje MySQL podržava.
Dat ću vam dvije mogućnosti da riješite ovaj problem:
1. Uredimo datoteku /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
U nju stavljamo sljedeće ispod gdje piše [mysql]:
max_connections = 500 max_user_connections = 500
To će povećati maksimalni broj veza sa 100 (što je zadana vrijednost) na 500.
Spremimo i izađemo, zatim ponovno pokrećemo MySQL uslugu i to je to. Ova promjena je trajna.
2. Drugi način rješavanja ovog problema je promjena maksimalnog ograničenja, ali korištenjem MySQL upita.
Pokažimo prvo trenutno ograničenje:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Ovo će nam pokazati otprilike ovako:
+ ----------------- + ------- + | Naziv_varijable | Vrijednost | + ----------------- + ------- + | max_veze | 151 | + ----------------- + ------- +
Drugim riječima, trenutačno ograničenje je 151 veza, pa, povisimo ga na 500 pomoću upita:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Spremni!
Problem na ovaj način je taj što se prilikom ponovnog pokretanja usluge ova konfiguracija gubi.
Da biste nadoknadili ovaj detalj, možete napraviti bash skriptu koja provjerava svakih X vremena, ili čak dodati redak na početak ili ponovno pokretanje bloka daemona
Ali zašto onda želim znati ovu drugu opciju? … pa, to sam i rekao. Ali prije mjesec dana Ubuntu Server ignorirao je metodu br. 2, pa... u ekstremnim slučajevima glupog OS-a, imamo ovu drugu opciju koja jednako dobro radi