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.