Utilisez-vous des connexions persistantes? Combien de connexions de sommeil avez-vous? Quelle est la quantité maximale de connexions que votre serveur DB est configuré pour autoriser?
Pour vérifier le nombre de connexions de veille que vous venez d'exécuter:
show full processlist;
Pour voir l'exécution de max_connections:
show variables like 'max_connections';
Je pense que les connexions en veille ne sont pas le problème, mysqld va expirer les connexions en veille basées sur 2 valeurs:
interactive_timeout wait_timetout
Les deux durent 28800 secondes (8 heures) par défaut.
Vous pouvez définir ces options dans my.cnf (l'emplacement de ce fichier est différent dans différents systèmes d'exploitation et bases de données, percona, mysql, etc.)
Consultez également cette réponse des administrateurs de base de données: https://dba.stackexchange.com/a/1559 et si vous souhaitez en savoir plus sur la façon de déboguer l'origine des connexions en veille, consultez cet excellent article: https: // www. percona.com/blog/2007/02/08/debugging-sleeping-connections-with-mysql/
"Si vos connexions sont persistantes (ouvertes via mysql_pconnect), vous pouvez réduire ces nombres à quelque chose de raisonnable comme 600 (10 min) ou même 60 (1 min). Ou, si votre application fonctionne très bien, vous pouvez laisser la valeur par défaut. C'est dépend de vous."
Essayez d'exécuter l'indexeur à partir de la console pour voir s'il génère une erreur:
php shell/indexer info # this will output the list of indexes then
php shell/indexer --reindex {index_name}