Wybrałeś wartość wait_timeout i Interactive_timeout w konfiguracji MySQL?

12

Mamy serwer na żywo, który jest mocno uderzony, więc staramy się zoptymalizować wszystko, co możemy. Uruchomiliśmy na nim skrypt MySQLTuner ( http://mysqltuner.com/ ), który mówi nam, że powinniśmy ustawić wartość mniejszą niż 28800 dla wait_timeout i Interactive_timeout. Istnieje wiele możliwych liczb do wyboru od 1 do 28800!

Sprawdziłem znaczenie tych zmiennych w dokumentacji MySQL, ale to dało jedynie bardzo prosty opis i brak wskazówek dotyczących wyboru wartości.

Czy istnieje wartość, która jest uważana za ogólnie przyjętą najlepszą praktykę? A jaki byłby prawdopodobny wynik wyboru zbyt niskiej wartości?

Dzięki,

Bart.

Bart B.
źródło

Odpowiedzi:

19

wait_timeout to czas w sekundach bezczynności, przez który MySQL będzie czekać, zanim zamknie połączenie w połączeniu nieinteraktywnym. czas_interaktywny jest taki sam, ale dla sesji interaktywnych (powłoka mysql)

Ustawienie zbyt niskiej wartości może spowodować nieoczekiwane zerwanie połączeń, szczególnie jeśli używasz trwałych połączeń w swojej aplikacji internetowej.

Ustawienie zbyt wysokiej wartości może spowodować, że stare połączenia pozostaną otwarte, uniemożliwiając nowy dostęp do bazy danych.

IMO, dla wait_timeout, chciałbyś, aby ta wartość była jak najniższa, bez wpływu na dostępność i wydajność. Możesz zacząć od 10 sekund i stopniowo go zwiększać, jeśli widzisz obniżoną wydajność.

W przypadku Interactive_timeout zmiana tej wartości tak naprawdę nie zwiększy ani nie obniży wydajności aplikacji.

Charles Hooper
źródło