2012-06-25 27 views
5

Recibo el siguiente error cuando intento iniciar sesión en phpMyAdmin.Cómo resolver el error de MySQL max_user_connections

usuario * * ya tiene más conexiones activas '' max_user_connections

Podría alguien que me haga saber cómo cerrar estas conexiones de base de datos de extremo del servidor MySQL?

¡Gracias por su tiempo!

+0

Por favor, intenta dar un poco más de contexto, ni siquiera nos dijiste en qué idioma estás trabajando ... – Trufa

+0

Hola Trufa, gracias por consultarlo, actualizado :) –

+0

Todavía creo que la pregunta podría tener un poco más de detalle, de todos modos, ¿has intentado google tu problema? http://goo.gl/xW9Oe Parece que hay muchas respuestas interesantes, tal vez una puede ayudar. – Trufa

Respuesta

1

En primer lugar, se trata de un truco, pero funciona, especialmente en un servidor compartido.
Todos tenemos malos "vecinos" a veces, ¿verdad?

Si tiene acceso a su/etc/aumenta el límite de 30 a 50, en su my.cnf o mediante el esquema de información.

  1. Para ignorar el mensaje de error que el visitante puede ver, utilice @mysql_connect().
  2. Si hay más de 30 MUC, utilice la instrucción "or die()" para detener la consulta.
  3. Reemplace el mensaje "o muera" con die(header(location: THIS PAGE)) y asegúrese de mysql_close();

Sí, se producirá un retraso en la carga de la página. Pero es mejor cargar que una pantalla blanca de la muerte, o peor, mensajes de error que los visitantes no entienden.

+2

OP no solicita una solución de PHP, estoy obteniendo el mismo problema en un contexto de C#. – Apolo

1

Su mejor opción es aumentar max_connections. Para una instancia de MySQL que sirve varias aplicaciones web diferentes (raw php, WordPress, phpBB), probablemente desee un valor de al menos 60 para esto.

Emita este mandato y se le averiguar cuántas conexiones globales que tiene disponible:

show global variables like '%connections%' 

Puede averiguar cuántas conexiones están en uso en un momento dado de esta manera:

show status like '%connected%' 

Usted puede averiguar lo que está haciendo cada conexión de la siguiente manera:

show full processlist 

lo haría intente obtener un valor global de al menos 100 conexiones si yo fuera usted. Su proveedor de servicios debería poder ayudarlo si no tiene acceso para hacerlo. Debe hacerse en la configuración del archivo my.cnf para MySQL. No lo configure demasiado alto o se corre el riesgo de que su proceso de servidor MySQL devore toda su memoria RAM.

Un segundo enfoque le permite asignar esas conexiones generales a sus diferentes usuarios de MySQL. Si tiene diferentes nombres de usuario 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és utilizando el servidor web Apache como tecnología subyacente. Puede reducir el número de tareas de Apache ejecutándose al mismo tiempo que, paradójicamente, aumentar rendimiento. Eso es porque Apache pone en cola las solicitudes. Si tiene algunas tareas que atraviesan la cola de forma eficiente, a menudo es más rápido que muchas tareas porque hay menos contención. También requiere menos conexiones de MySQL, lo que resolverá su problema inmediato. Eso se explica aquí: Restart Mysql automatically when ubuntu on EC2 micro instance kills it when running out of memory

Por cierto, las aplicaciones web como WordPress utilizan un grupo de conexión persistente. Es decir, establecen conexiones a la base de datos MySQL, las mantienen abiertas y las vuelven a usar. Si sus aplicaciones están ocupadas, la duración de cada conexión debería ser de varios minutos.

Cuestiones relacionadas