sql >> Base de Datos >  >> RDS >> Mysql

¿MySql Processlist lleno de entradas de suspensión que conducen a demasiadas conexiones?

Básicamente, obtienes conexiones en el estado de suspensión cuando:

  • un script PHP se conecta a MySQL
  • se ejecutan algunas consultas
  • entonces, el script PHP hace algunas cosas que toman tiempo
    • sin desconectarse de la base de datos
  • y, finalmente, el script PHP finaliza
    • lo que significa que se desconecta del servidor MySQL

Por lo tanto, generalmente termina con muchos procesos en estado de suspensión cuando tiene muchos procesos PHP que permanecen conectados, sin hacer nada en el lado de la base de datos.

Una idea básica, por lo tanto:asegúrese de no tener procesos PHP que se ejecuten durante demasiado tiempo, u oblíguelos a desconectarse tan pronto como ya no necesiten acceder a la base de datos.


Otra cosa que veo a menudo cuando hay algo de carga en el servidor:

  • Cada vez llegan más solicitudes a Apache
    • lo que significa muchas páginas para generar
  • Cada script PHP, para generar una página, se conecta a la base de datos y realiza algunas consultas
  • Estas consultas toman cada vez más tiempo, a medida que aumenta la carga en el servidor de base de datos
  • Lo que significa que se siguen acumulando más procesos

Una solución que puede ayudar es reducir el tiempo que toman sus consultas, optimizando las más largas.