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ć:
-
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. -
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. -
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.
-
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ą.
-
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.
-
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.