Hoe de MySQL-fout op te lossen: te veel verbindingen

Inleiding tot de MySQL-fout: te veel verbindingen

Wanneer u een webtoepassing (site, blog, forum, enz.) Heeft waar veel vraag naar is, dat wil zeggen dat een groot aantal gebruikers dat bezoekt, vertaalt zich dit in een verhoogd verbruik op de server. Als deze webapp een MySQL-database gebruikt en er zijn echt veel vragen (vanwege slechte programmering van het web of door veel gebruikers die het web gebruiken), is er een mogelijkheid dat MySQL deze fout laat zien:

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

Wat betekent de fout MySQL: Too Many Connections?

Het betekent dat er te veel verzoeken naar MySQL komen, meer dan het kan accepteren, meer dan in de wachtrij kan staan ​​of kan wachten.

Hoe los je het op?

Simpel, we moeten de maximale limiet van verzoeken (verbindingen) verhogen die MySQL ondersteunt.

Ik zal je twee opties geven om dit probleem op te lossen:

1. We bewerken het bestand /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

Daarin zetten we het volgende onder waar [mysql] staat:

max_connections = 500 max_user_connections = 500

Dit verhoogt het maximale aantal verbindingen van 100 (wat de standaard is) naar 500.

We slaan op en sluiten af, daarna herstarten we de MySQL-service en dat is alles. Deze wijziging is permanent.

2. Een andere manier om dit probleem op te lossen, is door de maximale limiet gelijk te veranderen, maar via een MySQL-query.

Laten we eerst de huidige limiet laten zien:

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

Dit zal ons zoiets laten zien:

+ ----------------- + ------- + | Variabele_naam | Waarde | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +

Met andere woorden, de huidige limiet is 151 connecties, laten we het verhogen tot 500 door middel van een vraag:

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

Klaar!

Het probleem op deze manier is dat wanneer de service opnieuw wordt gestart, deze configuratie verloren gaat.

Om dit detail te geven, kun je een bash-script maken dat elke X keer verifieert, of zelfs de regel toevoegen aan het start- of herstartblok van de daemon 😉

Maar waarom wil ik dan deze 2e optie weten? ... nou, dat is wat ik altijd zei. Maar een maand geleden negeerde een Ubuntu-server methode nr. 1, dus ... in extreme gevallen van dwaze besturingssystemen hebben we deze tweede optie die net zo goed werkt 😉


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   nex zei

    Goed bericht, MySql ... ze gebruiken veel in FreeBSD, ... .KZKG ^ Gaara?, ... Het zou goed zijn als je een bericht plaatst over het installeren en configureren van MySql in FreeBSD zoals: SSH (secure - shell), SSH (via web), SFTP (SSH-File Transfer Protocol), Apache - PHP- MySql, PHP5 en PhpSysInfo-extensies.

    1.    KZKG ^ Gaara zei

      Om dit te doen zou ik FreeBSD moeten installeren, ik denk niet dat ik nu de tijd heb, ik ben net van baan veranderd en heb veel nieuwe verantwoordelijkheden 🙁

  2.   Saul zei

    Ik moest onlangs iets soortgelijks doen voor een project met nodejs. In mijn geval ben ik gestegen naar 250 en dat was genoeg voor mij, voor nu gaat het prima. Bedankt voor de informatie

  3.   Francisco zei

    Hallo, kun je me helpen om /etc/mysql/my.cfg in te voeren?

    Ik heb een VPS, maar ik kan niet binnenkomen met PUTTY.

    Groeten.

  4.   aas zei

    Om het probleem van optie 1 op te lossen. - Optie met commentaar, en de wijzigingen behouden wanneer de server opnieuw wordt opgestart, moet het bestand worden bewerkt volgens de versie:

    ////////////////////////////////////////////////// ////////////////////
    // Ik verander de directory in Ubuntu 16.04 ////////////////////////
    ////////////////////////////////////////////////// ////////////////////
    Ik zag /etc/mysql/mysql.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // Ik verander de directory in Ubuntu 15.04 ////////////////////////
    ////////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////////// ////////////////////
    // Ik verander de directory in Ubuntu oud //////////////////////
    ////////////////////////////////////////////////// ////////////////////

    Ik zag /etc/mysql/my.cnf

    ////////////////////////////////////////////////// ////////////////////
    // voeg deze regel toe onder de [mysqld] of [mysql] tag //
    // Start vervolgens de server opnieuw op //
    ////////////////////////////////////////////////// ////////////////////
    max_connecties = 500

  5.   indignado zei

    Tutorial vanaf nul vertelt u nooit hoe u deze kunt wijzigen