Blog

Archive for abril, 2014

KB: 03042104-001: Gestionando posibles problemas de back log con MySQL

Descripción del problema

Dado un servidor con MySQL con una tasa alta de creación de conexiones MySQL, si se recibien notificaciones similares a las siguientes:

WARNING: found MySQL connection failure ((2003, "Can't connect to MySQL server on '127.0.0.1' (110)")), retrying query..

Y sin embargo, el servidor está funcionando bien, y se pueden hacer consultas al puerto/dirección indicada, entonces posiblemente sea un problema de “back log TCP” lleno.

Esta tasa de aceptación de conexión TCP depende del tamaño de la cola (el tamaño del backlog) y cuanto tiempo las conexiones permanecen en la cola (por ejemplo, el servidor puede estar tardando en sacar las conexiones de la cola).

En el caso de MySQL, el valor de back log está ajustado a 50. De manera que podemos tener 50 conexiones en espera de ser aceptadas.

Nota que este valor nada tiene que ver con “max_connections” que es el número de conexiones simultáneas, ya aceptadas, con las que el servidor MySQL va a trabajar.

Digamos que el “back_log” es la cola para entrar en un recinto, y el “max_connections” es el aforo de dicho recinto.

Posible solución del problema

Asumiendo que no haya otros problemas que estén causando este código 2003, es decir, que no:

  1. Haya un firewall que impida conectar en ciertas ocasiones (por ejemplo una configuración con burst rate).
  2. Que no haya un problema de rutado que haga que las conexiones funcionen solo en ocasiones.

Si no es el caso, el servicio está funcionando, pero de manera esporádica se rechazan conexiones, y hay conexiones disponibles (ejecutando un SHOW PROCESSLIST), entonces seguir los siguientes pasos:

  1. Si es así, actualizar el fichero /etc/mysql/my.cnf, dentro de la seción [mysqld] para añadir una declaración como:
    back_log = 200
  2. Tras esto, reiniciar el mysql (no coge el valor si solo se recarga).
    >> service mysql restart
  3. Después conectar, y ejecutar la instrucción:  SHOW VARIABLES para comprobar el valor del backlog.

Configuración con Core-Admin

Realizar esta configuración con Core-Admin es muy sencilla. Tan solo tiene que:

  1. Cargar la herramienta de Gestión MySQL (dentro de la vista de la máquina).
    gestor-mysql
     
     
  2. Ahora pulse sobre “Opciones”:
    opciones
     
     
  3. Después, pulse sobre la opción “Configurar”:
    configurar
     
     
  4. Tras esto tendrá acceso al panel de configuración. Ahí configure el valor de back log desado.

Posted in: MySQL, Performance

Leave a Comment (0) →