Supongamos que su sistema actualmente está basado en Unix (como se indica en la declaración de su problema). Si esto es correcto, este es el conjunto de problemas con los que te puedes encontrar:
-
Te has quedado sin memoria disponible para MySQL.
Este es el problema más probable al que te enfrentas. Cada conexión en el grupo de conexiones de MySQL requiere memoria para funcionar, y si este recurso se agota, no se pueden realizar más conexiones. Por supuesto, las huellas de memoria y los tamaños máximos de paquetes de varias operaciones se pueden ajustar en tu equivalente a
my.cnf
si descubre que se trata de un problema.Aquí hay un hilo adicional que puede ayudar , pero también puede considerar usar herramientas de creación de perfiles más simples como
top
para obtener una buena estimación aproximada de lo que está pasando. -
Te has quedado sin descriptores de archivo disponible para su cuenta de usuario de MySQL.
Otro problema común:si está tratando de atender solicitudes que requieren un archivo IO por encima del límite de 1024 (de forma predeterminada), se encontrará con casos en los que la operación simplemente falla. Esto se debe a que la mayoría de los sistemas especifican un límite flexible y estricto en la cantidad de descriptores de archivos abiertos que cada usuario puede tener disponibles al mismo tiempo, y pasar por encima de este umbral puede causar problemas.
Por lo general, esto tendrá una serie de signos evidentes expresados en sus archivos de registro. Compruebe
/var/log/messages
y sus directorios comparables (por ejemplo,/var/log/mysql
para ver si encuentras algo interesante. -
Te has topado con un livelock o deadlock escenario donde su hilo es insatisfactorio.
Como corolario del agotamiento de la memoria y del descriptor de archivos, los subprocesos pueden agotarse si se ha excedido en la carga computacional que su sistema es capaz de manejar. No arrojará este mensaje de error, pero esto es algo a tener en cuenta en el futuro.
-
Su sistema se está quedando sin PID disponibles para
fork
.Otro escenario común:
fork
solo tiene tantos PID disponibles para su uso en un momento dado. Si su sistema simplemente está sobrebifurcado , dejará de poder atender las solicitudes.La verificación más fácil para esto es ver si otros servicios pueden conectarse a través de la máquina. Por ejemplo, tratar de SSH en la caja y descubrir que no puede es una gran pista.
-
Un proxy ascendente o administrador de conexión se quedó sin recursos y dejó de atender las solicitudes.
Si tiene alguna capa de servicio entre su cliente y MySQL, vale la pena inspeccionarla para ver si se bloqueó, se colgó o se volvió inestable. Se aplica el consejo anterior.
-
Su asignador de puertos se ha agotado después de 65 536 conexiones .
Improbable, pero de nuevo, un posible caso de agotamiento. Verificar la conexión de servicio trivial como se indicó anteriormente es, ehm, también el mejor puerto de escala aquí.
En resumen:este es un escenario de agotamiento de recursos, incluido el servidor simplemente "inactivo". Vas a tener que perfilar más tu sistema para ver qué estás bloqueando. Todo lo que nos da el mensaje de error en este caso es el hecho de que el recurso no está disponible para el cliente; necesitaríamos ver más información sobre el servidor para determinar un remedio más adecuado.