Kā novērst MySQL kļūdu: pārāk daudz savienojumu

Ievads MySQL kļūdā: pārāk daudz savienojumu

Kad jums ir ļoti pieprasīta tīmekļa lietojumprogramma (vietne, emuārs, forums utt.), Tas ir, apmeklē liels skaits lietotāju, tas nozīmē palielinātu servera patēriņu. Ja minētajā tīmekļa lietotnē tiek izmantota MySQL datu bāze, un vaicājumu ir patiešām daudz (sliktas tīmekļa programmēšanas dēļ vai daudzi lietotāji, kas izmanto tīmekli), pastāv iespēja, ka MySQL parādīs šo kļūdu:

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

Ko nozīmē kļūda MySQL: pārāk daudz savienojumu?

Tas nozīmē, ka MySQL nāk pārāk daudz pieprasījumu, vairāk nekā tas spēj pieņemt, vairāk nekā tas var stāvēt rindā vai gaidīt.

Kā to atrisināt?

Vienkārši, mums jāpalielina MySQL atbalstīto pieprasījumu (savienojumu) maksimālais ierobežojums.

Es jums došu divas iespējas, kā novērst šo problēmu:

1. Mēs rediģējam failu /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

Tajā mēs ievietojam sekojošo, kur teikts [mysql]:

max_connections = 500 max_user_connections = 500

Tas palielinās maksimālo savienojumu skaitu no 100 (kas ir noklusējums) līdz 500.

Mēs saglabājam un izejam, pēc tam restartējam pakalpojumu MySQL, un viss. Šīs izmaiņas ir neatgriezeniskas.

2. Vēl viens veids, kā atrisināt šo problēmu, ir mainīt maksimālo robežu vienādi, bet izmantojot MySQL vaicājumu.

Vispirms parādīsim pašreizējo ierobežojumu:

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

Tas mums parādīs kaut ko līdzīgu:

+ ----------------- + ------- + | Mainīgais_nosaukums | Vērtība | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +

Citiem vārdiem sakot, pašreizējais ierobežojums ir 151 savienojums, labi, palielināsim to līdz 500, izmantojot vaicājumu:

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

Gatavs!

Šādā veidā problēma ir tā, ka, restartējot pakalpojumu, šī konfigurācija tiek zaudēta.

Lai sniegtu šo informāciju, varat izveidot bash skriptu, kuru pārbauda katru X reizi, vai pat pievienot līniju dēmona sākuma vai restartēšanas blokam 😉

Bet kāpēc tad es gribu zināt šo 2. variantu? ... labi, to es mēdzu teikt. Bet pirms mēneša Ubuntu serveris ignorēja metodi Nr. 1, tāpēc ... ārkārtējos dumjš OS gadījumos mums ir šī 2. opcija, kas darbojas tikpat labi 😉


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

6 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   nex teica

    Labs ziņojums, MySql ... viņi daudz izmanto FreeBSD, ... .KZKG ^ Gaara?, ... Būtu labi, ja izveidotu ziņu par to, kā instalēt un konfigurēt MySql FreeBSD, piemēram: SSH (drošs - apvalks), SSH ( izmantojot Web), SFTP (SSH-File Transfer Protocol), Apache - PHP- MySql, PHP5 un PhpSysInfo paplašinājumi.

    1.    KZKG ^ Gaara teica

      Lai to izdarītu, man būtu jāinstalē FreeBSD, es nedomāju, ka man šobrīd ir laiks, es vienkārši mainīju darbu un man ir daudz jaunu pienākumu 🙁

  2.   Saul teica

    Nesen man bija jādara kaut kas līdzīgs projektam ar nodejs. Manā gadījumā es palielinājos līdz 250, un man ar to pietika, pagaidām es daru labi. Paldies par informāciju

  3.   Francisco teica

    Sveiki, vai jūs varētu man palīdzēt ievadīt /etc/mysql/my.cfg?

    Man ir VPS, bet es nevaru iekļūt ar PUTTY.

    Sveicieni.

  4.   ēsma teica

    Lai atrisinātu 1. opcijas komentēto iespēju problēmu un saglabātu izmaiņas, restartējot serveri, fails ir jārediģē atbilstoši versijai:

    ////////////////////////////////////////////////////// // ////////////////////
    // Es mainu direktoriju Ubuntu 16.04 //////////////////////////
    ////////////////////////////////////////////////////// // ////////////////////
    vi /etc/mysql/mysql.conf.d/mysqld.cnf

    ////////////////////////////////////////////////////// // ////////////////////
    // Es mainu direktoriju Ubuntu 15.04 //////////////////////////
    ////////////////////////////////////////////////////// // ////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////////////// // ////////////////////
    // Es mainu direktoriju Ubuntu vecajā //////////////////////////
    ////////////////////////////////////////////////////// // ////////////////////

    vi /etc/mysql/my.cnf

    ////////////////////////////////////////////////////// // ////////////////////
    // pievienojiet šo rindiņu zem taga [mysqld] vai [mysql] //
    // Pēc tam restartējiet serveri //
    ////////////////////////////////////////////////////// // ////////////////////
    max_connections = 500

  5.   sašutis teica

    Apmācība no nulles nekad nenorāda, kā to mainīt