Solución:
Lea el documento de max_connections para resolver su problema
Si los clientes encuentran Demasiados errores de conexión al intentar conectarse al servidor mysqld, otros clientes están utilizando todas las conexiones disponibles.
El número permitido de conexiones está controlado por la variable de sistema max_connections. El valor predeterminado es 151 para mejorar el rendimiento cuando se usa MySQL con el servidor web Apache. Para admitir más conexiones, establezca max_connections en un valor mayor.
Primero: verifique la variable max_connection de su base de datos actual
SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
Luego, intente aumentar el parámetro max_connection con un comando de ejecución como:
SET GLOBAL max_connections = 300;
O configure este parámetro en my.cnf que se encuentra en /etc/my.cnf
vi /etc/my.cnf
max_connections = 300
Finalmente: reinicie el servicio mysql
Tu mejor apuesta es aumentar max_connections
. Para una instancia de MySQL que sirve a varias aplicaciones web diferentes (php sin formato, WordPress, phpBB), probablemente desee un valor de al menos 60 para esto.
Emita este comando y descubrirá cuántas conexiones globales tiene disponibles:
show global variables like '%connections%'
Puede averiguar cuántas conexiones están en uso en un momento dado como este:
show status like '%connected%'
Puede averiguar qué hace cada conexión de esta manera:
show full processlist
Intentaría obtener un valor global de al menos 100 conexiones si fuera usted. Su proveedor de servicios debería poder ayudarlo si no tiene acceso para hacer esto. Debe hacerse en el my.cnf
configuración de archivos para MySQL. No lo establezca demasiado alto o correrá el riesgo de que el proceso de su servidor MySQL consuma toda su RAM.
Un segundo enfoque le permite asignar esas conexiones generales a sus diferentes usuarios de MySQL. Si tiene diferentes nombres de usuario de MySQL para cada una de sus aplicaciones web, este enfoque funcionará para usted. Este enfoque está escrito aquí. https://www.percona.com/blog/2014/07/29/prevent-mysql-downtime-set-max_user_connections/
El enfoque final para controlar este problema es más sutil. Probablemente esté utilizando el servidor web Apache como tecnología subyacente. Usted puede reducir el número de tareas de Apache que se ejecutan al mismo tiempo para, paradójicamente, incrementar rendimiento. Eso es porque Apache pone en cola las solicitudes. Si tiene algunas tareas que atraviesan la cola de manera eficiente, a menudo es más rápido que muchas tareas porque hay menos contención. También requiere menos conexiones MySQL, lo que resolverá su problema inmediato. Eso se explica aquí: Reinicie Mysql automáticamente cuando ubuntu en la micro instancia EC2 lo mata cuando se queda sin memoria
Por cierto, las aplicaciones web como WordPress usan un grupo de conexiones persistentes. Es decir, establecen conexiones con la base de datos MySQL, las mantienen abiertas y las reutilizan. Si sus aplicaciones están ocupadas, la vida útil de cada conexión debería ser de varios minutos.
Parece que las consultas se atascan en el servidor. Reinicie y todo estará bien. Si tiene un alojamiento compartido, comuníquese con su proveedor de alojamiento, ellos lo arreglarán. Soy un usuario namecheap y lo resolvieron.