Ustawiłem maksymalną liczbę połączeń na około 2000 w pliku my.cnf.
max_connections=2048
Zaktualizowałem do wersji 5.5.20 i teraz widzę następujący wiersz w dzienniku błędów.
120201 19:40:24 [Warning] Changed limits: max_open_files: 1024 max_connections: 214 table_cache: 400
Dlaczego mysql zmienił maksymalną wartość połączeń na 214?
# mysqladmin variables | grep max_connections
| max_connections | 214
Miękkie i twarde otwarte pliki ograniczone przez system operacyjny to 1024
# ulimit -Sa | grep "open files"
open files (-n) 1024
# ulimit -Ha | grep "open files"
open files (-n) 1024
Liczba faktycznie używanych maksymalnych połączeń:
# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 95 |
+----------------------+-------+
ulimit -n 4096
yum
? Jeśli tak, to który pakiet?Odpowiedzi:
Wydaje mi się OK. Nie możesz mieć max_connections większych niż to, ponieważ open_files_limit jest zbyt niski. Dla każdego połączenia MySQL otwiera kilka plików. Spójrz tutaj .
Będziesz musiał zwiększyć limit otwartych plików w swoim systemie operacyjnym, a następnie możesz ustawić wyższą wartość max_connections.
źródło
Wygląda na to, że jest to ten sam problem, na który odpowiedziałem tutaj podczas przepływu stosów, chociaż korzystałem z CentOS 7 i MySQL 5.6.26
Musisz zwiększyć limit otwartych plików zarówno dla użytkownika mysql (w limitach.conf), jak i dla usługi mysql (w pliku mysql.service)
dołącz te dwa wiersze do /etc/security/limits.conf
dołącz tę linię do /usr/lib/systemd/system/mysqld.service (w sekcji [usługa])
następnie zrestartuj komputer i sprawdź, czy te komunikaty o błędach zniknęły z dziennika błędów mysql.
źródło
To wydaje się być błędem w nowym mysqld. Miałem ten sam problem. Ustawienie max_connections na 700 działało, ale jeśli ustawię na 900, podczas uruchamiania zostało zresetowane do 214. Gdyby to była celowa zmiana, obniżyłaby to do 700 lub czegoś podobnego, wartość 214 nie ma sensu.
W każdym razie zwiększenie limitu deskryptora za pomocą ulimit -n rozwiązuje problem.
źródło