Kako popraviti napako MySQL: Preveč povezav

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 😉


Vsebina članka je v skladu z našimi načeli uredniška etika. Če želite prijaviti napako, kliknite tukaj.

6 komentarja, pustite svojega

Pustite svoj komentar

Vaš e-naslov ne bo objavljen.

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   naslednji je dejal

    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.

    1.    KZKG ^ Gaara je dejal

      Za to bi moral namestiti FreeBSD, mislim, da zdaj nimam časa, samo zamenjal sem službo in imam veliko novih odgovornosti 🙁

  2.   Saul je dejal

    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

  3.   Francisco je dejal

    Pozdravljeni, mi lahko pomagate, kako vnesem /etc/mysql/my.cfg?

    Imam VPS, vendar ne morem vstopiti s PUTTY.

    Lep pozdrav.

  4.   vaba je dejal

    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 //////////////////////////
    //////////////////////////////////////////////////// //// //////////////////////
    vi /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 //////////////////////////
    //////////////////////////////////////////////////// //// //////////////////////

    vi /etc/mysql/my.cnf

    //////////////////////////////////////////////////// //// //////////////////////
    // dodamo to vrstico pod oznako [mysqld] ali [mysql] //
    // Nato znova zaženite strežnik //
    //////////////////////////////////////////////////// //// //////////////////////
    največ_povezav = 500

  5.   ogorčen je dejal

    Zero tutorial vam v nobenem trenutku ne pove, kako ga spremeniti

bool (true)