Too many connections. Error (HY000/1040) en MySQL

logo_gpsHola, hoy vamos a hablaros de un error muy común en MySQL: el error “Too many connections“. Veamos  por qué se produce y cómo y dónde corregirlo.

¿Qué significa el error “Too many connections“?

Este error se produce debido a que se ha alcanzado el número máximo de conexiones. Es posible que el error sea normal debido a la carga de trabajo de la base de datos. Pero puede ser también que haya conexiones que no se cierran en la aplicación o aplicaciones que la usa. En el caso de PHP, que es el lenguaje más común, se utiliza mysqli_close() si se está usando mysqli. Si se está usando mysql_connect(), habría que cerrar con mysql_close(). Este último método (mysql_connect y mysql_close) está deprecado en PHP 5.5 y eliminado en PHP 7.0, por lo que se recomienda, en caso de estar usándolo, remplazarlo por mysqli o usar PDO_MYSQL. Para esta tarea nos puede servir MySQL Workbench, ya que tiene un generador de código PHP, como puedes ver en esta entrada.

Aumentar el número de conexiones en MySQL

Si nuestro problema no viene por la parte de desarrollo de la aplicación, tendremos que aumentar el número de conexiones. Para aumentar el número de conexiones simultáneas en MySQL, es necesario modificar la variable max_connections del fichero de configuración de MySQL como se aprecia en la imagen.

Too many connections

En este caso se establece en 800 pero podríamos indicar el número que consideremos necesario. Un número excesivo en max_connections, puede acarrear un alto consumo de recursos si no se van cerrando las conexiones que podría dejar la base de datos sin servicio. La localización este fichero, dependerá de nuestro sistema operativo y versión de MySQL. En sistemas operativos Linux suele estar en “/etc/my.cnf” y en sistemas operativos Windows normalmente está ubicado en “C:\Program Files\MySQL Server <version>\my.ini“. Siempre que se modifique este fichero hay que realizar copia del mismo y reiniciar el servicio de MySQL. Si todo ha funcionado correctamente, debería arrancar la instancia de MySQL sin problemas. Para comprobar posteriormente si se ha aplicado el valor indicado, deberemos usar:

show global variables where variable_name='max_connections';

Esperamos que este artículo os haya servido, nos vemos en próximas entradas.

Equipo de Base de datos.