Stai usando connessioni persistenti? Quante connessioni di sonno hai? Qual è la quantità massima di connessioni che il tuo DB Server è configurato per consentire?
Per verificare quante connessioni di sonno hai appena eseguito:
show full processlist;
Per vedere l'esecuzione di max_connections:
show variables like 'max_connections';
Penso che le connessioni in sospensione non siano il problema, mysqld eseguirà il timeout delle connessioni in sospensione in base a 2 valori:
interactive_timeout wait_timetout
Entrambi sono 28800 secondi (8 ore) per impostazione predefinita.
È possibile impostare queste opzioni in my.cnf (la posizione di questo file è diversa in diversi SO e DB, percona, mysql, ecc.)
Vedi anche questa risposta dagli amministratori del database: https://dba.stackexchange.com/a/1559 e se vuoi saperne di più su come eseguire il debug dell'origine delle connessioni in sospensione, consulta questo eccellente articolo: https: // www. percona.com/blog/2007/02/08/debugging-sleeping-connections-with-mysql/
"Se le tue connessioni sono persistenti (aperte tramite mysql_pconnect) puoi abbassare questi numeri a qualcosa di ragionevole come 600 (10 min) o anche 60 (1 min). Oppure, se la tua app funziona bene, puoi lasciare l'impostazione predefinita. Questo è sta a te."
Prova a eseguire l'indicizzatore dalla console per vedere se genera qualche errore:
php shell/indexer info # this will output the list of indexes then
php shell/indexer --reindex {index_name}