Jak naprawić błąd MySQL: za dużo połączeń

Wprowadzenie do błędu MySQL: zbyt wiele połączeń

Kiedy masz aplikację internetową (witrynę, blog, forum itp.), Na którą jest duże zapotrzebowanie, czyli odwiedza dużą liczbę użytkowników, przekłada się to na zwiększone zużycie na serwerze. Jeśli wspomniana aplikacja internetowa korzysta z bazy danych MySQL, a zapytań jest naprawdę wiele (z powodu złego programowania sieci lub wielu użytkowników korzystających z sieci) istnieje możliwość, że MySQL pokaże ten błąd:

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

Co oznacza błąd MySQL: Too Many Connections?

Oznacza to, że do MySQL przychodzi zbyt wiele żądań, więcej niż może przyjąć, więcej niż może ustawić w kolejce lub czekać.

Jak to rozwiązać?

Po prostu musimy zwiększyć maksymalny limit żądań (połączeń), które obsługuje MySQL.

Dam ci dwie opcje rozwiązania tego problemu:

1. Edytujemy plik /etc/mysql/my.cfg:

nano /etc/mysql/my.cfg

W nim umieściliśmy następujące pod tym, gdzie jest napisane [mysql]:

max_connections = 500 max_user_connections = 500

Zwiększy to maksymalną liczbę połączeń ze 100 (wartość domyślna) do 500.

Zapisujemy i wychodzimy, a następnie ponownie uruchamiamy usługę MySQL i to wszystko. Ta zmiana jest trwała.

2. Innym sposobem rozwiązania tego problemu jest zmiana maksymalnego limitu na równy, ale za pomocą zapytania MySQL.

Najpierw pokażmy aktualny limit:

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

To pokaże nam coś takiego:

+ ----------------- + ------- + | Variable_name | Wartość | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +

Innymi słowy, obecny limit to 151 połączeń, cóż, podnieśmy go do 500 za pomocą zapytania:

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

Gotowy!

Problem polega na tym, że po ponownym uruchomieniu usługi ta konfiguracja jest tracona.

Aby dostarczyć te szczegóły, możesz utworzyć skrypt bash, który za każdym razem weryfikuje X, lub nawet dodać linię do bloku startu lub restartu demona 😉

Ale w takim razie dlaczego chcę znać tę drugą opcję? ... cóż, to właśnie mówiłem. Ale miesiąc temu Ubuntu Server zignorował metodę nr 2, więc ... w skrajnych przypadkach głupiego systemu operacyjnego mamy tę drugą opcję, która działa równie dobrze 😉


6 komentarzy, zostaw swoje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   nex powiedział

    Dobry post, MySql… dużo używają we FreeBSD,… .KZKG ^ Gaara?,… Byłoby dobrze, gdybyś napisał post o tym, jak zainstalować i skonfigurować MySql we FreeBSD, np .: SSH (bezpieczna powłoka), SSH (przez WWW), SFTP (SSH-File Transfer Protocol), Apache - PHP- MySql, PHP5 i rozszerzenia PhpSysInfo.

    1.    KZKG ^ Gaara powiedział

      Do tego musiałbym zainstalować FreeBSD, chyba nie mam teraz czasu, właśnie zmieniłem pracę i mam wiele nowych obowiązków 🙁

  2.   Saul powiedział

    Niedawno musiałem zrobić coś podobnego dla projektu z nodejs. W moim przypadku zwiększyłem do 250 i to mi wystarczyło, na razie radzę sobie dobrze. Dzięki za informację

  3.   Francisco powiedział

    Witaj, czy możesz mi pomóc, jak wprowadzić /etc/mysql/my.cfg?

    Mam VPS, ale nie mogę się połączyć z PUTTY.

    Pozdrowienia.

  4.   przynęta powiedział

    Aby rozwiązać problem Opcji 1. - Opcja skomentowana i zachować zmiany przy ponownym uruchomieniu serwera, plik należy edytować zgodnie z wersją:

    ////////////////////////////////////////////////////////////////////////////// ////////////////////
    // Zmieniam katalog w Ubuntu 16.04 ////////////////////////
    ////////////////////////////////////////////////////////////////////////////// ////////////////////
    Widziałem /etc/mysql/mysql.conf.d/mysqld.cnf

    ////////////////////////////////////////////////////////////////////////////// ////////////////////
    // Zmieniam katalog w Ubuntu 15.04 ////////////////////////
    ////////////////////////////////////////////////////////////////////////////// ////////////////////
    vi /etc/mysql/mariadb.conf.d/mysqld.cnf

    ////////////////////////////////////////////////////////////////////////////// ////////////////////
    // Zmieniam katalog w Ubuntu stary ////////////////////////
    ////////////////////////////////////////////////////////////////////////////// ////////////////////

    Widziałem /etc/mysql/my.cnf

    ////////////////////////////////////////////////////////////////////////////// ////////////////////
    // dodaj tę linię pod tagiem [mysqld] lub [mysql] //
    // Następnie zrestartuj serwer //
    ////////////////////////////////////////////////////////////////////////////// ////////////////////
    max_połączenia = 500

  5.   oburzony powiedział

    Samouczek od zera w żadnym momencie nie podpowiada, jak to zmienić