Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zasób MySQL jest chwilowo niedostępny

Załóżmy, że twój system jest obecnie oparty na Uniksie (jak podano w opisie problemu). Jeśli to prawda, oto zestaw problemów, które możesz napotkać:

  1. Zabrakło Ci pamięci dostępne dla MySQL.

    To jest najbardziej prawdopodobny problem, z którym się zmagasz. Każde połączenie w puli połączeń MySQL wymaga pamięci do działania, a jeśli ten zasób zostanie wyczerpany, nie można nawiązać dalszych połączeń. Oczywiście ślady pamięci i maksymalne rozmiary pakietów różnych operacji można dostroić w Twój odpowiednik my.cnf jeśli odkryjesz, że stanowi to problem.

    Oto dodatkowy wątek, który może w tym pomóc , ale możesz również rozważyć użycie prostszych narzędzi do profilowania, takich jak top aby uzyskać dobre oszacowanie tego, co się dzieje.

  2. Skończyły Ci się deskryptory plików dostępne dla Twojego konta użytkownika MySQL.

    Inny powszechny problem:jeśli próbujesz obsłużyć żądania, które wymagają operacji we/wy pliku powyżej granicy 1024 (domyślnie), napotkasz przypadki, w których operacja po prostu się nie powiedzie. Dzieje się tak, ponieważ większość systemów określa miękki i twardy limit liczby otwartych deskryptorów plików, które każdy użytkownik może mieć jednocześnie, a przekroczenie tego progu może powodować problemy.

    Będzie to zwykle zawierało serię rażąco oczywistych znaków wyrażonych w plikach dziennika. Sprawdź /var/log/messages i porównywalne katalogi (na przykład /var/log/mysql aby zobaczyć, czy możesz znaleźć coś interesującego.

  3. Natrafiłeś na zakleszczenie lub zakleszczenie scenariusz, w którym Twój wątek jest niezadowalający.

    W następstwie wyczerpania pamięci i deskryptora plików, wątki mogą przekroczyć limit czasu, jeśli przekroczysz obciążenie obliczeniowe, które system jest w stanie obsłużyć. Nie wyświetli tego komunikatu o błędzie, ale jest to coś, na co należy uważać w przyszłości.

  4. W Twoim systemie kończą się identyfikatory PID dostępne dla fork .

    Inny powszechny scenariusz:fork ma tylko tyle PID dostępnych do użytku w danym momencie. Jeśli twój system jest po prostu overforked , przestanie być w stanie obsługiwać żądania.

    Najłatwiej to sprawdzić, czy inne usługi mogą połączyć się z komputerem. Na przykład próba SSH do skrzynki i odkrycie, że nie możesz, jest dużą wskazówką.

  5. Nadrzędny serwer proxy lub menedżer połączeń wyczerpały zasoby i przestał obsługiwać żądania.

    Jeśli masz jakąkolwiek warstwę usług między klientem a MySQL, należy sprawdzić, czy nie uległa awarii, zawieszeniu lub w inny sposób stała się niestabilna. Powyższe porady mają zastosowanie.

  6. Twój program mapowania portów wyczerpał się po 65 536 połączeniach .

    Mało prawdopodobne, ale znowu możliwy przypadek wyczerpania. Sprawdzenie trywialnego połączenia serwisowego jak powyżej jest, ehm, również najlepszym portem połączenia tutaj.

W skrócie:jest to scenariusz wyczerpania zasobów, w tym serwer po prostu „niedziałający”. Będziesz musiał dalej sprofilować swój system, aby zobaczyć, co blokujesz. W tym przypadku komunikat o błędzie informuje nas tylko o tym, że zasób jest niedostępny dla klienta — musielibyśmy zobaczyć więcej informacji o serwerze aby określić bardziej odpowiedni środek zaradczy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ostrzeżenie:mysql_fetch_array():podany argument nie jest prawidłowym wynikiem MySQL

  2. Jak używać zmiennych użytkownika w klauzuli MySQL LIKE?

  3. Jak skopiować wiersz i wstawić do tej samej tabeli z polem autoinkrementacji w MySQL?

  4. Kiedy automatycznie tworzysz subdomeny podczas rejestracji użytkownika, tworzy to nową stronę internetową lub daje wygląd strony internetowej?

  5. Jak używać mysql w C++?