Qu'est-ce que vous obtenez quand vous
mysql> show global variables like "wait%";
Essayez de le réduire en éditant my.cnf, ou avec le code suivant (en tant que root)
mysql> SET GLOBAL wait_timeout=28801;
Il existe un bon article sur (l'excellent) MySQL Performance Blog qui traite des requêtes dormantes. http://www.mysqlperformanceblog.com/2007/02/08/debugging-sleeping-connections-with-mysql/
Cela vaut également la peine de jeter un coup d'œil http://rackerhacker.com/2007/05/20/mysql-connections-in-sleep-state/
Une autre réflexion en relisant le commentaire de Dan : Le temps de sleep(0) est étrange, cependant. Cela me semble indiquer qu'il y a des connexions persistantes qui ne dorment pas vraiment, mais qui font quelque chose au moins toutes les secondes pour réinitialiser le timer. Si vous savez que la webapp n'utilise pas de connexions persistantes, peut-être appelle-t-elle sleep() directement, quelque part dans une boucle ou une fonction de temporisation ?
En outre, Si vous utilisez, par exemple, PHP, vous pouvez entrer dans le php.ini et définir les paramètres suivants mysql.allow_persistent = Off
et voir ce qui se passe.
PS : Quelle version de MySQL utilisez-vous ? Quelque chose de similaire a été signalé comme un bogue sérieux dans la version 4.1, mais c'était en 2005...