¿Cuánto tiempo es "demasiado largo" para que MySQL Connections se suspenda?

38

Me conecté a mi servidor para verificar el estado de la base de datos y me di cuenta de SHOW PROCESSLIST;que hay una gran cantidad de conexiones suspendidas que son muy antiguas.

ingrese la descripción de la imagen aquí ¿Qué duración debe ser el límite de tiempo de conexión antes de que se corte la conexión?

¿Cómo configuro el límite de tiempo en MySQL 5.0.51a-3ubuntu5.4?

Nota:

Estoy usando PHP 5.2.xy Symfony Framework 1.2.

Patricio
fuente
Un blog detallado: sforsuresh.in/how-to-delete-sleeping-processes-in-mysql
Suresh Kamrushi

Respuestas:

53

mysqld agotarán las conexiones de la base de datos en función de dos opciones de servidor:

Ambos son 28.800 segundos (8 horas) por defecto.

Puede configurar estas opciones en /etc/my.cnf

Si sus conexiones son persistentes (abiertas a través de mysql_pconnect), puede reducir estos números a algo razonable como 600 (10 minutos) o incluso 60 (1 minuto). O, si su aplicación funciona bien, puede dejar el valor predeterminado. Esto depende de ti.

Debe configurarlos de la siguiente manera my.cnf(surte efecto después de mysqldreiniciarse):

[mysqld]
interactive_timeout=180
wait_timeout=180

Si no desea reiniciar mysql, ejecute estos dos comandos:

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

Esto no cerrará las conexiones ya abiertas. Esto hará que se cierren nuevas conexiones en 180 segundos.

RolandoMySQLDBA
fuente
así que en /etc/my.cnf simplemente pondría wait_timeout=180?
Patrick
@Patrick Sí, pero debe establecer interactivo_timeout y wait_timeout en 180. Actualicé mi respuesta para su respuesta.
RolandoMySQLDBA
Este archivo puede estar en otro lugar dev.mysql.com/doc/refman/5.1/en/option-files.html y estas opciones no pueden ser explicitadas (escríbalas usted mismo)
nicolallias