Kiel ripari la MySQL-eraron: Tro da Ligoj

Enkonduko al la eraro de MySQL: Tro da Ligoj

Kiam vi havas TTT-programon (retejo, blogo, forumo, ktp) tre postulata, tio estas, ke multaj uzantoj vizitas, tio signifas pliigitan konsumon en la servilo. Se ĉi tiu retejo-programo uzas MySQL-datumbazon kaj la demandoj estas vere multaj (pro malbona programado de la retejo aŭ de multaj uzantoj uzantaj la retejon), ekzistas ebleco, ke MySQL montros ĉi tiun eraron:

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

Kion signifas la eraro MySQL: Tro da Ligoj?

Ĝi signifas, ke tro multaj petoj venas al MySQL, pli ol ĝi povas akcepti, pli ol ĝi povas vici aŭ atendi.

Kiel solvi ĝin?

Simpla, ni devas pliigi la maksimuman limon de petoj (ligoj) subtenataj de MySQL.

Mi donos al vi du eblojn por solvi ĉi tiun problemon:

1. Ni redaktas la dosieron /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

En ĝi ni metas la jenon sub kie ĝi diras [mysql]:

max_connections = 500 max_user_connections = 500

Ĉi tio pliigos la maksimuman nombron de konektoj de 100 (kiu estas la apriora) al 500.

Ni konservas kaj eliras, tiam ni rekomencas la servon MySQL kaj jen. Ĉi tiu ŝanĝo estas konstanta.

2. Alia maniero solvi ĉi tiun problemon estas ŝanĝi la maksimuman limon egale, sed per konsilo pri MySQL.

Ni unue montru la nunan limon:

mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'

Ĉi tio montros al ni ion tian:

+ ----------------- + ------- + | Variablo_nomo | Valoro | + ----------------- + ------- + | maks_konektoj | 151 | + ----------------- + ------- +

Alivorte, la nuna limo estas 151 ligoj, nu, ni levu ĝin al 500 per demando:

mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'

Preta!

La problemo tiamaniere estas, ke kiam la servo estas rekomencita, ĉi tiu agordo perdiĝas.

Por provizi ĉi tiun detalon, vi povas krei bash-skripton, kiu kontrolas ĉiun Xan fojon, aŭ eĉ aldoni la linion al la komenca aŭ rekomenca bloko de la demono 😉

Sed kial mi volas scii ĉi tiun 2an opcion? ... nu, tion mi kutimis diri. Sed antaŭ unu monato Ubuntu-Servilo ignoris metodon n-ro 1, do ... en ekstremaj kazoj de stulta OS, ni havas ĉi tiun duan eblon, kiu funkcias same bone just


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

6 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   apud diris

    Bona afiŝo, MySql ... ili multe uzas en FreeBSD, ... .KZKG ^ Gaara?, ... Estus bone se vi afiŝus, kiel instali kaj agordi MySql en FreeBSD kiel: SSH (sekura - ŝelo), SSH ( per TTT), SFTP (SSH-File Transfer Protocol), Apache - PHP- MySql, PHP5 kaj PhpSysInfo Extensions.

    1.    KZKG ^ Gaara diris

      Por tio mi devus instali FreeBSD, mi ne pensas, ke mi havas la tempon nun, mi nur ŝanĝis laborpostenon kaj mi havas multajn novajn respondecojn 🙁

  2.   Saul diris

    Mi ĵus devis fari ion similan por projekto kun nodejs. En mia kazo ĝi plialtiĝis al 250 kaj tio sufiĉis, ĉar nun mi fartas bone. Dankon por la informo

  3.   francisco diris

    Saluton, ĉu vi povus helpi min kiel eniri /etc/mysql/my.cfg?

    Mi havas VPS, sed mi ne povas eniri kun PUTTY.

    Salutojn.

  4.   logaĵo diris

    Por solvi la problemon de Opcio 1.- Komentita opcio, kaj konservi la ŝanĝojn dum rekomencado de la servilo, la dosiero devas esti redaktita laŭ versio:

    ////////////////////////////////////////////////////////// ////////////////////
    // Mi ŝanĝas la dosierujon en Ubuntu 16.04 //////////////////////////
    ////////////////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mysql.conf.d/mysqld.cnf

    ////////////////////////////////////////////////////////// ////////////////////
    // Mi ŝanĝas la dosierujon en Ubuntu 15.04 //////////////////////////
    ////////////////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////////////////// ////////////////////
    // Mi ŝanĝas la dosierujon en Ubuntu malnova //////////////////////////
    ////////////////////////////////////////////////////////// ////////////////////

    vi /etc/mysql/my.cnf

    ////////////////////////////////////////////////////////// ////////////////////
    // aldonu ĉi tiun linion sub la etikedo [mysqld] aŭ [mysql] //
    // Poste rekomencu la servilon //
    ////////////////////////////////////////////////////////// ////////////////////
    maks_konektoj = 500

  5.   indignigita diris

    Lernilo de nulo en neniu momento montras al vi kiel ŝanĝi ĝin