Kako ispraviti pogrešku MySQL: Previše veza

Uvod u pogrešku MySQL: Previše veza

Kada imate web-aplikaciju (web mjesto, blog, forum itd.) Koja je vrlo tražena, odnosno koju posjećuje velik broj korisnika, to se pretvara u povećanu potrošnju na poslužitelju. Ako spomenuta web aplikacija koristi MySQL bazu podataka, a upita je stvarno mnogo (zbog lošeg programiranja weba ili zbog toga što mnogi korisnici koriste web), postoji mogućnost da MySQL prikaže ovu pogrešku:

mysqli_connect(): (HY000/1040): Too many connections

Što znači pogreška MySQL: Previše veza?

To znači da previše zahtjeva dolazi u 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. Uređujemo 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 ponovno pokrećemo MySQL uslugu i to je to. Ova promjena je trajna.

2. Drugi način rješavanja ovog problema je promjena maksimalne granice jednake, ali putem 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:

+ ----------------- + ------- + | Naziv_varijable | Vrijednost | + ----------------- + ------- + | max_veze | 151 | + ----------------- + ------- +

Drugim riječima, trenutačno ograničenje je 151 veza, pa, povisimo 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 naveli ovaj detalj, možete napraviti bash skriptu koja svaki X put provjerava ili čak dodati redak u blok pokretanja ili ponovnog pokretanja demona

Ali zašto onda želim znati ovu drugu opciju? ... pa, to sam znao reći. Ali prije mjesec dana Ubuntu poslužitelj ignorirao je metodu br. 2, pa ... u ekstremnim slučajevima glupog OS-a imamo ovu drugu opciju koja djeluje jednako dobro 😉


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   nex dijo

    Dobar post, MySql ... puno koriste u FreeBSD-u, ... .KZKG ^ Gaara?, ... Bilo bi dobro da napravite post o tome kako instalirati i konfigurirati MySql u FreeBSD-u poput: SSH (sigurna ljuska), SSH (putem weba), SFTP (SSH-File Transfer Protocol), Apache - PHP-MySql, PHP5 i PhpSysInfo proširenja.

    1.    KZKG ^ Gaara dijo

      Za ovo bih morao instalirati FreeBSD, mislim da trenutno nemam vremena, samo sam promijenio posao i imam puno novih odgovornosti 🙁

  2.   Saul dijo

    Nedavno sam morao napraviti nešto slično za projekt s nodejsima. U mom se slučaju povećao na 250 i to mi je bilo dovoljno, za sada mi ide dobro. Zahvaljujem na informaciji

  3.   Francisco dijo

    Pozdrav, možete li mi pomoći kako unijeti /etc/mysql/my.cfg?

    Imam VPS, ali ne mogu ući s PUTTY.

    Pozdrav.

  4.   mamac dijo

    Da biste riješili problem opcije 1. - Komentirana opcija i zadržale promjene prilikom ponovnog pokretanja poslužitelja, datoteka se mora urediti prema verziji:

    //////////////////////////////////////////////////////// ////////////////////
    // Mijenjam direktorij u Ubuntu 16.04 //////////////////////////
    //////////////////////////////////////////////////////// ////////////////////
    Vidio sam /etc/mysql/mysql.conf.d/mysqld.cnf

    //////////////////////////////////////////////////////// ////////////////////
    // Mijenjam direktorij u Ubuntu 15.04 //////////////////////////
    //////////////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    //////////////////////////////////////////////////////// ////////////////////
    // Mijenjam direktorij u Ubuntu starom //////////////////////////
    //////////////////////////////////////////////////////// ////////////////////

    Vidio sam /etc/mysql/my.cnf

    //////////////////////////////////////////////////////// ////////////////////
    // dodaj ovaj redak pod oznaku [mysqld] ili [mysql] //
    // Zatim ponovno pokrenite poslužitelj //
    //////////////////////////////////////////////////////// ////////////////////
    max_veze = 500

  5.   ogorčena dijo

    Vodič od nule niti u jednom trenutku vam govori kako ga promijeniti