¿Estás usando conexiones persistentes? ¿Cuántas conexiones para dormir tienes? ¿Cuál es la cantidad máxima de conexiones que su servidor DB está configurado para permitir?
Para verificar cuántas conexiones inactivas acaba de ejecutar:
show full processlist;
Para ver la ejecución de max_ connections:
show variables like 'max_connections';
Creo que las conexiones inactivas no son el problema, mysqld agotarán las conexiones inactivas basadas en 2 valores:
interactive_timeout wait_timetout
Ambos son 28800 segundos (8 horas) por defecto.
Puede configurar estas opciones en my.cnf (la ubicación de este archivo es diferente en diferentes sistemas operativos y bases de datos, percona, mysql, etc.)
Consulte también esta respuesta de los administradores de bases de datos: https://dba.stackexchange.com/a/1559 y si desea obtener más información sobre cómo depurar el origen de las conexiones inactivas, consulte este excelente artículo: https: // www. percona.com/blog/2007/02/08/debugging-sleeping-connections-with-mysql/
"Si sus conexiones son persistentes (abiertas a través de mysql_pconnect), puede reducir estos números a algo razonable como 600 (10 min) o incluso 60 (1 min). O, si su aplicación funciona bien, puede dejar el valor predeterminado. Esto es Depende de usted."
Intente ejecutar el indexador desde la consola para ver si genera algún error:
php shell/indexer info # this will output the list of indexes then
php shell/indexer --reindex {index_name}
configure su servidor mysql configurando un tiempo de espera más corto
wait_timeout
yinteractive_timeout
mysql> muestra variables como
"%timeout%"
;Colocado con:
(y también establecido en su archivo de configuración, para cuando su servidor se reinicie)
Pero está tratando los síntomas en lugar de la causa subyacente: ¿por qué están abiertas las conexiones? Si el script PHP terminó, ¿no deberían cerrarse? Asegúrese de que su servidor web no esté utilizando la agrupación de conexiones ...
fuente