SQLSTATE – ¿Por qué MySQL no responde?

Los problemas de comunicación con base de datos ocurren en cualquier sistema, independientemente de ser o no Magento.

En realidad, este post ayuda a todos los desarrolladores que trabajan con bases de datos, más específicamente con MySQL.

El SQLSTATE informa de un problema, lo que causó el problema de comunicación. Pero no indica su origen. Veamos abajo.

Interpretando los mensajes

Generalmente son mensajes cortos, del tipo:

SQLSTATE[HY000]: General error: 2013 Lost connection to MySQL server during query
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

En realidad no nos informa nada, sólo lo que ya sabemos (dio error). Una traducción libre para estos mensajes serían respectivamente:

Error genérico: 2013 Fui a consultar la base de datos y me perdí en la vuelta
Error genérico: 2006 El servidor de base de datos ha abandonado

Por eso es tan difícil encontrar una solución pronta, porque desconocemos las causas del problema.

Posibles causas

Servidor fuera del aire. Esto puede ocurrir durante unos segundos o unas horas. El servidor de base de datos puede haber reiniciado o apagado.

Y esto puede ocurrir por varias razones, como una actualización de versión o seguridad, falta de energía, apagado accidental, sobrecarga, bloqueos, etc.

Tiempo de respuesta. Todo sistema tiene un límite de espera, y cuando su sistema “conversación” con la base de datos, se hace una solicitud… MySQL acepta su solicitud y va a procesar… y esto puede tomar algún tiempo… si usted no esperar suficiente tiempo, se va sin la respuesta.

Es decir, existe una configuración que indica al servidor cuál es el tiempo de espera de ejecución para una solicitud. Si el tiempo estalla, el proceso se detiene, y se lanza un mensaje de error al sistema.

No pretendo profundizar en el asunto, pero también existe la cola de espera. Usted quiere hacer una solicitud a la base de datos, pero antes de que hay otras 300 personas esperando para hacer la consulta. Y el volumen de transacciones afecta su tiempo de respuesta, y también en la sobrecarga, comentado anteriormente.

Infraestructura

Como dije al principio del post, es difícil dar una solución definitiva, pues la causa del problema es desconocida y/o incierta. Sin embargo, a menudo la deficiencia está en la infraestructura utilizada.

Servidor y Hospedaje. Mucha gente confunde el servidor y el alojamiento, y no es posible dar una explicación en profundidad en el momento. Pero en resumen:

Servidor, es la máquina, el ordenador que va a permanecer conectado y conectado a Internet para que la gente accede a su sitio.

Hospedaje, es su configuración dentro de este servidor, los recursos que estarán disponibles para su sistema.

Ambos son importantes, entonces es imperativo que usted contrate un servidor de calidad, con un buen plan de alojamiento (VPS, Dedicado, o Cloud).

Empresas recomendadas: Rackspace, Nexcess, UolHost, Hostgator, Digital Ocean

Configuración

Algunas veces usted puede resolver el problema a través de configuración, al menos temporalmente (hasta agotar los recursos). Accede a su MySQL a través de PhpMyAdmin y haga clic en Variables.

Variables de phpMyAdmin

Todas las variables pueden (y deben) ser configuradas según la necesidad de su sistema y/o volumen de accesos. En el caso de Magento usted podría cambiar los valores de:

#el valor predeterminado es 10 (segundos), aumente si su problema es el error 2013.
connect_timeout=30

#tempo máximo (segundos) que el servidor espera antes de cerrar una conexión sin actividad.
wait_timeout=300

#se recomienda el 25% de la memoria disponible para la base de datos. si es superior al 50% la máquina se vuelve lenta.
key_buffer_size=64M

#debe ser el doble de max_connections
table_open_cache=2000

#cuantidad máxima de conexiones simultáneas
max_connections=1000

Referencia oficial: connect_timeout, wait_timeout, key_buffer_size, table_open_cache, max_connections.

Reinicie mysql después de realizar los cambios.

No siempre tendrá acceso a estas configuraciones, sobre todo si está utilizando un plan de alojamiento compartido.

Atención Si está utilizando un plan compartido, los problemas serán recurrentes.

Al menos ahora tienes una idea de lo que se puede hacer para resolver el problema.

¡Éxito!

Hasta que surja la oportunidad de mudarme a España, sigo ayudando desde la distancia.