Uvod u MySQL grešku: 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 servera. 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
Šta znači greška MySQL: Previše veza?
To znači da previše zahtjeva dolazi na 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 ponovo 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:
+ ----------------- + ------- + | Variable_name | Vrijednost | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
Drugim riječima, trenutno ograničenje je 151 konekcija, pa, podignimo 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 red u start ili restart blok demona
Ali zašto onda želim da znam ovu drugu opciju? … pa, to sam rekao. Ali prije mjesec dana Ubuntu server je ignorirao metod br.2, pa... u ekstremnim slučajevima glupog OS-a, imamo ovu drugu opciju koja jednako dobro funkcionira