Mysql
 sql >> Base de données >  >> RDS >> Mysql

Liste de processus MySql remplie d'entrées de sommeil conduisant à trop de connexions ?

En gros, vous obtenez des connexions en état de veille lorsque :

  • un script PHP se connecte à MySQL
  • certaines requêtes sont exécutées
  • alors, le script PHP fait des choses qui prennent du temps
    • sans se déconnecter de la BD
  • et, enfin, le script PHP se termine
    • ce qui signifie qu'il se déconnecte du serveur MySQL

Ainsi, vous vous retrouvez généralement avec de nombreux processus en état de veille lorsque de nombreux processus PHP restent connectés, sans rien faire du côté de la base de données.

Une idée de base, donc :assurez-vous que vous n'avez pas de processus PHP qui s'exécutent trop longtemps -- ou forcez-les à se déconnecter dès qu'ils n'ont plus besoin d'accéder à la base de données.


Une autre chose, que je vois souvent quand il y a de la charge sur le serveur :

  • Apache reçoit de plus en plus de requêtes
    • ce qui signifie de nombreuses pages à générer
  • Chaque script PHP, afin de générer une page, se connecte à la base de données et effectue des requêtes
  • Ces requêtes prennent de plus en plus de temps, à mesure que la charge sur le serveur de base de données augmente
  • Ce qui signifie que davantage de processus s'empilent

Une solution qui peut vous aider consiste à réduire la durée de vos requêtes, en optimisant les plus longues.