Você está usando conexões persistentes? Quantas conexões de sono você possui? Qual é a quantidade máxima de conexões que o DB Server está configurado para permitir?
Para verificar quantas conexões de suspensão você acabou de executar:
show full processlist;
Para ver o max_connections, execute:
show variables like 'max_connections';
Eu acho que as conexões de dormir não são o problema, o mysqld atingirá o tempo limite de conexões de sono com base em 2 valores:
interactive_timeout wait_timetout
Ambos são 28800 segundos (8 horas) por padrão.
Você pode definir essas opções no my.cnf (a localização desse arquivo é diferente em diferentes sistemas operacionais e bancos de dados, percona, mysql, etc.)
Consulte também esta resposta dos Administradores do banco de dados: https://dba.stackexchange.com/a/1559 e se você quiser saber mais sobre como depurar a origem das conexões inativas, verifique este excelente artigo: https: // www. percona.com/blog/2007/02/08/debugging-sleeping-connections-with-mysql/
"Se suas conexões forem persistentes (abertas via mysql_pconnect), você poderá diminuir esses números para algo razoável como 600 (10 min) ou até 60 (1 min). Ou, se seu aplicativo funcionar perfeitamente, você pode deixar o padrão. Isso é você decide."
Tente executar o indexador no console para ver se ele gera algum erro:
php shell/indexer info # this will output the list of indexes then
php shell/indexer --reindex {index_name}
configure seu servidor mysql definindo um tempo limite mais curto
wait_timeout
einteractive_timeout
mysql> mostra variáveis como
"%timeout%"
;Definido com:
(e também definido no seu arquivo de configuração, para quando o servidor reiniciar)
Mas você está tratando os sintomas em vez da causa subjacente - por que as conexões estão abertas? Se o script PHP terminar, eles não devem fechar? Verifique se o servidor da web não está usando o pool de conexões ...
fonte