TimeOut en conexiones a MySQL

En muchas ocasiones se puede dar el caso de que tengamos un servidor de base de datos al que se conectan muchos clientes de todo tipo. Cuando las aplicaciones que se conectan las diseñamos nosotros podemos hacer un uso responsable del acceso a base de datos, es decir, accedemos a la base de datos, realizamos la consulta que queramos y luego CERRAMOS dicha conexión. Esto es lo normal y habitual (excepto que se use un pool de conexiones). Si las aplicaciones no las controlamos nosotros, sino que fueron diseñadas por terceros, entonces el resultado puede ser un montón de conexiones al servidor MySQL en estado Sleep.
Si las aplicaciones están escritas en php, lo podemos solucionar editando el fichero php.ini y deshabilitar las conexiones persistentes a MySQL.
mysql.allow_persistent = Off
mysql.max_persistent = 20
Esto mismo también se puede hacer en el servidor de MySQL para que sea él el que mate las conexiones pasado un cierto tiempo de gracia. En caso de que no haya actividad (estado sleep), se terminan. Para ello, en la sección [ mysqld ] añadimos,
wait_timeout = 60
Este mismo valor lo podemos fijar en caliente para ver sus efectos,
set global wait_timeout=30;
Tras aplicar los cambios, pasaremos de una salida tal que así,
mysql> show processlist;
+-----+------+------------------+-------+---------+-------+-------+------
| Id  | User | Host             | db    | Command | Time  | State | Info
+-----+------+------------------+-------+---------+-------+-------+------
| 149 | app  | 192.168.1.2:5350 | users | Sleep   |  1921 |       | NULL
| 185 | zbx  | 192.168.1.7:5365 | zbx   | Sleep   | 12719 |       | NULL
| 628 | root | localhost        | NULL  |         | Query |     0 | show...
+-----+------+------------------+-------+---------+-------+-------+------
3 rows in set (0.00 sec)
A una mucho más limpia,
mysql> show processlist;
+-----+------+-----------+------+---------+------+-------+-------------
| Id  | User | Host      | db   | Command | Time | State | Info
+-----+------+-----------+------+---------+------+-------+-------------
| 639 | root | localhost | NULL | Query   |    0 | NULL  | show processlist
+-----+------+-----------+------+---------+------+-------+-------------
1 rows in set (0.00 sec)


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios