mysqli :: real_connect (): (08004/1040): Demasiadas conexiones, MySql 操作 缓慢: copiar en la tabla tmp

fondo

MySQL entorno de producción de base de datos de repente se abre una gran cantidad de enlaces demasiadas conexiones, lo que lleva a la parálisis de todo el sitio de dos horas, el sitio no es accesible, reinicie el reinicio del servidor de base de datos en vano, porque proyectamos relativamente grande, pulido después de numerosas personas, por lo que dan investigación ha traído algunas dificultades, por lo que la investigación fue resume vacías las ideas y métodos para resolver el largo tiempo de menos de dos horas.

registro de errores de MySQL

La primera vez se encontró con un problema de este tipo, es inevitable sentir impotente, más o menos siguiendo la dirección de la investigación:

Mira proceso en línea, ver operación de SQL, consulte los más antiguos, ver estados de SQL.

Solución de problemas

Dirección 1: Se sugirió: max_connections Este valor puede cambiarse a una más grande solucionar temporalmente algunos problemas en primer lugar. De hecho, aquí es un error grave, estima que un cambio grande no tenía mucho sentido, sobre todo para encontrar el problema proceso de SQL.

Dirección 2: Ejecutar comando show processlist

Notas: mostrar processlist es el hilo conductor de usuario, hay que señalar que, además de que el usuario root puede ver todos los subprocesos que se ejecutan fuera, los demás usuarios sólo pueden ver sus propios hilos se ejecutan, otros usuarios no pueden ver el funcionamiento hilo. Esto por sí solo a menos que un usuario da permiso PROCESO.

3 direcciones: realizan la demostración variables como '% tiempo de espera%' comandos

Ver límite de tiempo, o condición de bloqueo. Se llegó a la conclusión: utilizar un gran número, pero no bloqueadas.

Dirección de 4: Ejecutar programa de comando de estado del motor InnoDB

Ese show motor InnoDB de estado muestra la cantidad de información que el estado del sistema, si usted no sabe cómo tomar un vistazo a este blog

SQL ha encontrado que tienen una mesa tmp copia, conecte el número ha ido en aumento, amortiguar la piscina ya ocupado terminado.

Ejecución espectáculo processlist de nuevo para ver el proceso de SQL actual, específicamente un análisis cuidadoso del caso

Y finalmente encontró el verdadero culpable, este SQL se ha ejecutado, y la copia de una tabla temporal para tmp mesa, encontrar este SQL se sabe cómo es el negocio, el original es "servicio de notificación anormal" tareas de tiempo, detrás temporal detener este negocio, para restaurar el acceso al sitio, y luego hacer negocio dedicado a la optimización de emergencia.

 

concluido

Es el día antes de la versión en línea, añadir a alguien al campo tabla indexada causado por el primer día del sistema está inactivo, ya que es en la noche, no encuentra el problema, al día siguiente el personal para utilizar el sistema ha sido no abierta. 

Los pasos clave:
realizado principalmente espectáculo processlist, ver el hilo de todas las mesas de operación 
encuentran en copia Estado Estado de tmp mesa, porque se trata de un conjunto de resultados temporal es mayor que tmp_table_size, las tablas temporales se almacenan en la memoria de almacenamiento en disco con el fin de ahorrar memoria

solución:

Interrupción temporal de los servicios de SQL, SQL optimizar la emergencia. Más métodos de optimización de MySQL Ver esta entrada del blog: https://blog.csdn.net/u012104435/article/details/50915604

reflexión:

Publicado por encima de la dirección de la investigación, la dirección principal de la derecha, hay muchos en la dirección equivocada y no hay dirección inmaterial publicado cabo, el proceso de investigación extremadamente nervioso y giros y vueltas, espero que los problemas similares próximo encuentro se pueden resolver.

 

Publicados 285 artículos originales · ganado elogios 258 · Vistas 1,21 millones +

Supongo que te gusta

Origin blog.csdn.net/meimeieee/article/details/105189429
Recomendado
Clasificación