„MySQL“ klaidos įvadas: per daug jungčių
Kai turite žiniatinklio programą (svetainę, tinklaraštį, forumą ir pan.), kuri sulaukia didelės apkrovos, t. y. ją aplanko daug vartotojų, tai reiškia, kad padidėja serverio išteklių sunaudojimas. Jei ši žiniatinklio programa naudoja „MySQL“ duomenų bazę ir užklausų yra labai daug ( dėl prasto svetainės programavimo ar didelio vartotojų skaičiaus ), „MySQL“ gali rodyti šią klaidą:
mysqli_connect(): (HY000/1040): Too many connections
Ką reiškia „MySQL: per daug jungčių“ klaida?
Tai reiškia, kad į „MySQL“ gaunama per daug užklausų, daugiau nei ji gali priimti, daugiau nei gali eilėje ar laukti.
Kaip tai išspręsti?
Paprasta, turime padidinti maksimalų „MySQL“ palaikomų užklausų (ryšių) limitą.
Aš pateiksiu dvi galimybes išspręsti šią problemą:
1. Redaguojame failą /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
Jame mes dedame šiuos dalykus, kur parašyta [mysql]:
max_connections = 500 max_user_connections = 500
Tai padidins maksimalų jungčių skaičių nuo 100 (tai yra numatytasis nustatymas) iki 500.
Mes išsaugome ir išeiname, tada perkrauname „MySQL“ paslaugą ir viskas. Šis pokytis yra nuolatinis.
2. Kitas būdas išspręsti šią problemą yra pakeisti maksimalią ribą, bet naudojant MySQL užklausą.
Pirmiausia parodykime dabartinę ribą:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Tai mums parodys maždaug taip:
+ ----------------- + ------- + | Kintamasis_vardas | Vertė + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
Kitaip tariant, dabartinė riba yra 151 ryšys, pakelkime ją iki 500 naudodami užklausą:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Paruošta!
Tokiu būdu kyla problema, kad paleidus paslaugą iš naujo, ši konfigūracija prarandama.
Norėdami kompensuoti šią detalę, galite sukurti bash scenarijų, kuris tikrina kas X laiko, arba netgi pridėti eilutę prie demono pradžios arba paleidimo iš naujo bloko
Bet kodėl tada aš noriu žinoti šį antrąjį variantą? ... Na, tai aš sakiau. Tačiau prieš mėnesį Ubuntu serveris ignoravo metodą Nr.2, todėl... kraštutiniais kvailos OS atvejais turime šią 1-ąją parinktį, kuri veikia taip pat gerai