Uvod v napako MySQL: Preveč povezav
Ko imate zelo zahtevno spletno aplikacijo (spletno mesto, spletni dnevnik, forum itd.), Ki jo obišče veliko število uporabnikov, to pomeni povečano porabo na strežniku. Če omenjena spletna aplikacija uporablja bazo podatkov MySQL in je poizvedb res veliko (zaradi slabega programiranja spleta ali številnih uporabnikov spleta), obstaja možnost, da MySQL prikaže to napako:
mysqli_connect(): (HY000/1040): Too many connections
Kaj pomeni napaka MySQL: Too Many Connections?
To pomeni, da v MySQL prihaja preveč prošenj, več kot jih lahko sprejme, več kot jih lahko čaka v čakalni vrsti.
Kako to rešiti?
Preprosto, povečati moramo največjo mejo zahtev (povezav), ki jih podpira MySQL.
Dala vam bom dve možnosti za odpravo te težave:
1. Urejamo datoteko /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
Vanj spodaj, kjer piše [mysql], damo naslednje:
max_connections = 500 max_user_connections = 500
To bo povečalo največje število povezav s 100 (kar je privzeto) na 500.
Shranimo in zapremo, nato ponovno zaženemo storitev MySQL in to je to. Ta sprememba je trajna.
2. Drug način za rešitev te težave je spremeniti največjo dovoljeno mejo, vendar s poizvedbo MySQL.
Pokažimo najprej trenutno omejitev:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
To nam bo pokazalo nekaj takega:
+ ----------------- + ------- + | Ime_premenljivke | Vrednost | + ----------------- + ------- + | največ_povezav | 151 | + ----------------- + ------- +
Z drugimi besedami, trenutna omejitev je 151 povezav, povišamo jo na 500 s pomočjo poizvedbe:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Pripravljen!
Težava na ta način je, da se ob ponovnem zagonu storitve ta konfiguracija izgubi.
Če želite navesti te podrobnosti, lahko ustvarite bash skript, ki preveri vsakič X, ali celo dodate vrstico v blok za zagon ali ponovni zagon demona 😉
Toda zakaj potem želim vedeti to drugo možnost? ... no, tako sem rekel. Toda pred mesecem dni je strežnik Ubuntu prezrl metodo št. 2, zato ... v skrajnih primerih neumnega OS imamo to drugo možnost, ki deluje enako dobro 😉
Dobra objava, MySql ... veliko uporabljajo v FreeBSD,… .KZKG ^ Gaara?,… Dobro bi bilo, če bi objavili, kako namestiti in konfigurirati MySql v FreeBSD, kot so: SSH (varna lupina), SSH ( prek spleta), SFTP (SSH-File Transfer Protocol), Apache - PHP-MySql, PHP5 in PhpSysInfo Extensions.
Za to bi moral namestiti FreeBSD, mislim, da zdaj nimam časa, samo zamenjal sem službo in imam veliko novih odgovornosti 🙁
Pred kratkim sem moral nekaj podobnega narediti za projekt z nodejs. V mojem primeru se je povečala na 250 in to mi je bilo dovolj, za zdaj mi gre v redu. Hvala za informacije
Pozdravljeni, mi lahko pomagate, kako vnesem /etc/mysql/my.cfg?
Imam VPS, vendar ne morem vstopiti s PUTTY.
Lep pozdrav.
Da bi rešili težavo možnosti 1. - Komentirana možnost in obdržali spremembe med ponovnim zagonom strežnika, je treba datoteko urediti glede na različico:
//////////////////////////////////////////////////// //// //////////////////////
// V Ubuntu 16.04 spremenim imenik //////////////////////////
//////////////////////////////////////////////////// //// //////////////////////
Videl sem /etc/mysql/mysql.conf.d/mysqld.cnf
//////////////////////////////////////////////////// //// //////////////////////
// V Ubuntu 15.04 spremenim imenik //////////////////////////
//////////////////////////////////////////////////// //// //////////////////////
vi /etc/mysql/mariadb.conf.d/mysqld.cnf
//////////////////////////////////////////////////// //// //////////////////////
// V Ubuntuju spremenim imenik stari //////////////////////////
//////////////////////////////////////////////////// //// //////////////////////
Videl sem /etc/mysql/my.cnf
//////////////////////////////////////////////////// //// //////////////////////
// dodamo to vrstico pod oznako [mysqld] ali [mysql] //
// Nato znova zaženite strežnik //
//////////////////////////////////////////////////// //// //////////////////////
največ_povezav = 500
Zero tutorial vam v nobenem trenutku ne pove, kako ga spremeniti