Optimizar las conexiones a MySQL


Si monitorizamos nuestro servidor MySQL recién instalado, podemos comprobar con el paso de las horas cómo se van amontonando conexiones en estado "Sleep" durante horas. Si nuestro servidor de base de datos empieza a recibir muchas conexiones será cuestión de tiempo que empiece a denegarlas.
El problema de que las conexiones quedén ahí sin cerrar los encontramos en la configuración de nuestros Apaches y en el propio MySQL.

  • En nuestros Apaches debemos revisar /etc/php.ini para configurar las conexiones persistentes a MySQL
    mysql.allow_persistent = Off
    mysql.max_persistent = 20
    De esta forma le decimos a Apache que no se quede ahí con conexiones persistentes: Conecte y cierre.
  • En MySQL editar /etc/mysql/my.cnf y en la sección de [mysqld] añadir
    wait_timeout = 60
    El valor por defecto es 1 dia (expresado en segundos), y es el tiempo que tarda MySQL en matar sesiones, esperando a que se cierren. Tendremos que reiniciar el servicio para que se apliquen los cambios.

Para consultar el valor de las variables de TimeOut de nuestro MySQL debemos entrar en la consola mysql y ejecutar:
show global variables like '%time%';

Para fijar un valor en caliente:
set global wait_timeout=30;

La imagen la he sacado del album de mjsonline en flickr

No hay comentarios: