Kako ispraviti grešku MySQL: Previše veza

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 


Dodaj kao preferirani izvor na Googleu