Bevezetés a MySQL hibába: Túl sok kapcsolat
Ha egy webes alkalmazásod (weboldal, blog, fórum stb.) nagy forgalmat bonyolít le, azaz nagyszámú felhasználó látogatja, az megnövekedett szervererőforrás-felhasználást eredményez. Ha ez a webes alkalmazás MySQL adatbázist használ, és a lekérdezések száma nagyon magas (a rossz weboldal-programozás vagy a nagyszámú felhasználó miatt ), a MySQL a következő hibát jelenítheti meg:
mysqli_connect(): (HY000/1040): Too many connections
Mit jelent a MySQL: Túl sok kapcsolat hiba?
Ez azt jelenti, hogy túl sok kérés érkezik a MySQL-hez, több, mint amennyit el tud fogadni, több, mint amennyit sorba állíthat vagy várhat.
Hogyan lehet megoldani?
Egyszerű, meg kell növelnünk a MySQL által támogatott kérések (kapcsolatok) maximális számát.
Két lehetőséget adok a probléma megoldására:
1. Szerkesztjük az /etc/mysql/my.cfg fájlt:
nano /etc/mysql/my.cfg
Ebben a következőket tesszük a [mysql] felirat alá:
max_connections = 500 max_user_connections = 500
Ez a kapcsolatok maximális számát 100-ról (ami az alapértelmezett) 500-ra növeli.
Mentünk és kilépünk, majd újraindítjuk a MySQL szolgáltatást, és kész. Ez a változás végleges.
2. A probléma megoldásának egy másik módja a maximális korlát megváltoztatása, de MySQL lekérdezés használatával.
Mutassuk először az aktuális határt:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Ez valami ilyesmit mutat nekünk:
+ ----------------- + ------- + | Változó_neve Érték | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
Más szavakkal, a jelenlegi korlát 151 kapcsolat, nos, emeljük 500-ra egy lekérdezés segítségével:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Kész!
Ilyen módon az a probléma, hogy a szolgáltatás újraindításakor ez a konfiguráció elvész.
Ennek a részletnek a pótlására készíthet egy bash szkriptet, amely minden X alkalommal ellenőrzi, vagy akár hozzáadhatja a sort a démon indító vagy újraindítási blokkjához
De akkor miért akarom tudni ezt a 2. lehetőséget? … nos, ezt mondtam. De egy hónappal ezelőtt egy Ubuntu szerver figyelmen kívül hagyta az 1-es metódust, szóval... a hülye operációs rendszer szélsőséges eseteiben megvan ez a 2. lehetőség, ami ugyanolyan jól működik