Quanto tempo é "muito longo" para o MySQL Connections dormir?

38

Entrei no meu servidor para verificar o status do banco de dados e notei SHOW PROCESSLIST;que há um grande número de conexões inativas muito antigas.

insira a descrição da imagem aqui Qual a duração do limite de conexão antes que a conexão seja interrompida?

Como faço para definir o limite de tempo no MySQL 5.0.51a-3ubuntu5.4?

Nota:

Estou usando o PHP 5.2.xe o symfony framework 1.2.

Patrick
fonte
Um blog detalhada: sforsuresh.in/how-to-delete-sleeping-processes-in-mysql
Suresh Kamrushi

Respostas:

53

mysqld atingirá o tempo limite das conexões com o banco de dados com base em duas opções de servidor:

Ambos são 28.800 segundos (8 horas) por padrão.

Você pode definir essas opções em /etc/my.cnf

Se suas conexões forem persistentes (abertas via mysql_pconnect), você poderá diminuir esses números para algo razoável como 600 (10 minutos) ou até 60 (1 minuto). Ou, se o aplicativo funcionar bem, você pode deixar o padrão. Isso é com você.

Você deve configurá-los da seguinte maneira em my.cnf(entra em vigor após a mysqldreinicialização):

[mysqld]
interactive_timeout=180
wait_timeout=180

Se você não deseja reiniciar o mysql, execute estes dois comandos:

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

Isso não fechará as conexões já abertas. Isso fará com que novas conexões fechem em 180 segundos.

RolandoMySQLDBA
fonte
então no /etc/my.cnf eu colocaria wait_timeout=180?
Patrick
@ Patrick Sim, mas você precisa definir o interactive_timeout e o wait_timeout para 180. Atualizei minha resposta para sua resposta.
RolandoMySQLDBA
Este arquivo pode estar em outro lugar dev.mysql.com/doc/refman/5.1/en/option-files.html e essas opções não podem ser explicitado (escrevê-los por si mesmo)
nicolallias