Gdy liczba klientów MySQL przekroczy maksymalną liczbę połączeń, sterowniki w różnych językach zgłaszają błąd "Zbyt wiele połączeń".
Błąd programu Java:
Źródło danych odrzuciło nawiązanie połączenia, komunikat z serwera: "Za dużo połączeń"
Błąd programu .NET Core:
Za dużo połączeń A przynajmniej coś takiego błąd przy łączeniu: Czas minął. Okres przejścia minął przed uzyskaniem połączenia z pulą. Mogło to nastąpić, ponieważ wszystkie połączenia połączone były używane i osiągnięto maksymalny rozmiar puli.
Użyj następującego polecenia, aby zobaczyć maksymalną liczbę połączeń oraz aktualną liczbę połączeń:
tymczasowo ustala maksymalną liczbę połączeń,Nie musisz restartować serwera MySQL, ale ustawienie staje się nieprawidłowe po restarcie usługi MySQL:
Możesz na stałe ustawić maksymalną liczbę połączeń z bazą danych w /etc/my.cnf:
Gdy ustawimy maksymalną liczbę połączeń i testujemy z programem .NET, błąd nadal będzie następujący:
błąd przy łączeniu: Czas minął. Okres przejścia minął przed uzyskaniem połączenia z pulą. Mogło to nastąpić, ponieważ wszystkie połączenia połączone były używane i osiągnięto maksymalny rozmiar puli. Wynika to z faktu, że klienci .NET domyślnie korzystają z pul wątków, a maksymalny limit pul wątków domyślnie wynosi: 100
Logowanie do linku jest widoczne.
MyZamknięcie puli wątków poolingu, bez użycia puli wątków nie ma limitu, test jest równoległy z 500 wątkami jednocześnie i nie zgłasza się błędu, jak pokazano na poniższym rysunku:
Kod testowy .NET/C# wygląda tak:
(Koniec)
|