Paano ayusin ang error sa MySQL: Napakaraming Koneksyon

Panimula sa error sa MySQL: Napakaraming Koneksyon

Kapag mayroon kang isang web application (site, blog, forum, atbp.) Na mataas ang demand, iyon ay, isang malaking bilang ng mga gumagamit na bumibisita, isasalin ito sa tumaas na pagkonsumo sa server. Kung sinabi na ang web app ay gumagamit ng isang MySQL database at ang mga query ay talagang marami (dahil sa hindi magandang programa ng web o ng maraming mga gumagamit na gumagamit ng web), may posibilidad na ipapakita ng MySQL ang error na ito:

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

Ano ang ibig sabihin ng error sa MySQL: Masyadong Maraming Koneksyon?

Nangangahulugan ito na masyadong maraming mga kahilingan ang darating sa MySQL, higit sa maaari nitong tanggapin, higit sa maaari itong pumila o maghintay.

Paano ito malulutas?

Simple, dapat nating taasan ang maximum na limitasyon ng mga kahilingan (koneksyon) na sinusuportahan ng MySQL.

Bibigyan kita ng dalawang mga pagpipilian upang ayusin ang problemang ito:

1. Ina-edit namin ang file /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

Sa loob nito inilalagay namin ang mga sumusunod sa ilalim ng kung saan sinasabi nito [MySQL]:

max_connections = 500 max_user_connections = 500

Dadagdagan nito ang maximum na bilang ng mga koneksyon mula sa 100 (na kung saan ay ang default) sa 500.

Nagse-save at lumabas kami, pagkatapos ay i-restart namin ang serbisyo ng MySQL at iyon lang. Permanente ang pagbabagong ito.

2. Ang isa pang paraan upang malutas ang problemang ito ay baguhin ang maximum na maximum na limitasyon, ngunit sa pamamagitan ng isang query sa MySQL.

Ipakita muna natin ang kasalukuyang limitasyon:

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

Ipapakita nito sa amin ang isang bagay tulad nito:

+ ----------------- + ------- + | Variable_name | Halaga | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +

Sa madaling salita, ang kasalukuyang limitasyon ay 151 mga koneksyon, aba, itaas natin ito sa 500 sa pamamagitan ng isang query:

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

Handa!

Ang problema sa ganitong paraan ay kapag nai-restart ang serbisyo, nawala ang pagsasaayos na ito.

Upang maibigay ang detalyeng ito, maaari kang gumawa ng isang bash script na bawat oras na napatunayan ng X, o idagdag pa ang linya sa pagsisimula o pag-restart ng bloke ng daemon 😉

Ngunit bakit gusto kong malaman ang ika-2 pagpipiliang ito? ... well, yan ang sinasabi ko dati. Ngunit isang buwan na ang nakalilipas ang isang Ubuntu Server ay hindi pinansin ang pamamaraan No.1, kaya ... sa matinding mga kaso ng ulok na OS mayroon kaming ika-2 na pagpipilian na ito ay gumagana rin


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   nex dijo

    Magandang post, MySql… marami silang ginagamit sa FreeBSD,… .KZKG ^ Gaara?,… Mabuti kung gumawa ka ng isang post, kung paano i-install at i-configure ang MySql sa FreeBSD tulad ng: SSH (secure - shell), SSH (sa pamamagitan ng Web), SFTP (SSH-File Transfer Protocol), Apache - PHP- MySql, PHP5 at PhpSysInfo Extensions.

    1.    KZKG ^ Gaara dijo

      Para sa mga ito nais kong mai-install ang FreeBSD, sa palagay ko wala akong oras sa ngayon, nagbago lang ako ng trabaho at marami akong mga bagong responsibilidad 🙁

  2.   Saul dijo

    Kamakailan lamang ay kailangan kong gumawa ng katulad na bagay para sa isang proyekto na may mga nodejs. Sa aking kaso tumaas ito sa 250 at sapat na iyon, sa ngayon ay mabuti pa ako. Salamat sa impormasyon

  3.   Francisco dijo

    Kumusta, maaari mo ba akong tulungan kung paano ipasok ang /etc/mysql/my.cfg?

    Mayroon akong VPS, ngunit hindi ako makakasama sa PUTTY.

    Pagbati.

  4.   pain dijo

    Upang malutas ang problema ng Opsyon 1.- Opsyon na may puna, at panatilihin ang mga pagbabago kapag i-restart ang server, dapat na mai-edit ang file ayon sa bersyon:

    // ///. ///. // ///. // ///.
    // Binago ko ang direktoryo sa Ubuntu 16.04 // ///. ///.
    // ///. ///. // ///. // ///.
    vi /etc/mysql/mysql.conf.d/mysqld.cnf

    // ///. ///. // ///. // ///.
    // Binago ko ang direktoryo sa Ubuntu 15.04 // ///. ///.
    // ///. ///. // ///. // ///.
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    // ///. ///. // ///. // ///.
    // Binago ko ang direktoryo sa Ubuntu luma // ///.
    // ///. ///. // ///. // ///.

    Nakita ko ang /etc/mysql/my.cnf

    // ///. ///. // ///. // ///.
    // idagdag ang linyang ito sa ilalim ng [MySQL] o [MySQL] na tag //
    // Pagkatapos ay i-restart ang server //
    // ///. ///. // ///. // ///.
    max_connections = 500

  5.   nagagalit dijo

    Ang zero tutorial nang walang oras ay nagsasabi sa iyo kung paano ito baguhin