Escolhendo um valor para wait_timeout e interactive_timeout na configuração do MySQL?

12

Como temos um servidor ativo que está sendo atingido com força, estamos tentando otimizar tudo o que pudermos. Rodamos o script MySQLTuner nele ( http://mysqltuner.com/ ), que nos diz que devemos definir um valor menor que 28800 para wait_timeout e interactive_timeout. Há muitos números possíveis para escolher entre 1 e 28800!

Eu procurei o significado dessas variáveis ​​na documentação do MySQL, mas isso forneceu apenas uma descrição muito básica e nenhuma orientação sobre a escolha de um valor.

Existe um valor considerado uma prática recomendada geralmente aceita? E qual seria o resultado provável da escolha de um valor muito baixo?

Obrigado,

Bart.

Bart B
fonte

Respostas:

19

wait_timeout é a quantidade de segundos durante a inatividade que o MySQL aguardará antes de fechar uma conexão em uma conexão não interativa. Interactive_timeout é o mesmo, mas para sessões interativas (shell mysql)

Definir um valor muito baixo pode fazer com que as conexões caiam inesperadamente, especificamente se você estiver usando conexões persistentes no aplicativo da web.

Definir um valor muito alto pode fazer com que as conexões obsoletas permaneçam abertas, impedindo um novo acesso ao banco de dados.

Na IMO, para wait_timeout, você deseja que esse valor seja o mais baixo possível, sem afetar a disponibilidade e o desempenho. Você pode começar com 10 segundos e aumentá-lo gradualmente se estiver vendo um desempenho degradado.

Para o dynamic_timeout, alterar esse valor não aumentará nem diminuirá o desempenho do seu aplicativo.

Charles Hooper
fonte