it-swarm.dev

Jak długo trwa „za długo”, aby połączenia MySQL mogły spać?

Zalogowałem się na mój serwer, aby sprawdzić status bazy danych i zauważyłem na SHOW PROCESSLIST; że istnieje duża liczba uśpionych połączeń, które są bardzo stare.

enter image description here Jaki powinien być czas połączenia, zanim połączenie powinno zostać zerwane?

Jak ustawić limit czasu w MySQL 5.0.51a-3ubuntu5.4?

Uwaga:

Używam PHP 5.2.xi symfony Framework 1.2.

39
Patrick

mysqld przekroczy limit czasu połączeń z bazą danych na podstawie dwóch opcji serwera:

Oba mają domyślnie 28 800 sekund (8 godzin).

Możesz ustawić te opcje w /etc/my.cnf

Jeśli twoje połączenia są trwałe (otwarte przez mysql_pconnect) możesz obniżyć te liczby do rozsądnych wartości, takich jak 600 (10 minut) lub nawet 60 (1 minuta). Lub, jeśli aplikacja działa dobrze, możesz pozostawić domyślną. To zależy od Ciebie.

Musisz ustawić je w następujący sposób w my.cnf (działa po ponownym uruchomieniu mysqld):

[mysqld]
interactive_timeout=180
wait_timeout=180

Jeśli nie chcesz ponownie uruchamiać mysql, uruchom następujące dwa polecenia:

SET GLOBAL interactive_timeout = 180;
SET GLOBAL wait_timeout = 180;

Nie spowoduje to zamknięcia już otwartych połączeń. Spowoduje to zamknięcie nowych połączeń za 180 sekund.

54
RolandoMySQLDBA