Вы используете постоянные соединения? Сколько у вас спящих соединений? Какое максимальное количество соединений ваш БД-сервер настроен для разрешения?
Чтобы проверить, сколько соединений сна вы только что запустили:
show full processlist;
Чтобы увидеть запуск max_connections:
show variables like 'max_connections';
Я думаю, что спящие соединения не являются проблемой, mysqld будет тайм-аут спящих соединений на основе 2 значений:
интерактивное время ожидания
Оба - 28800 секунд (8 часов) по умолчанию.
Вы можете установить эти параметры в my.cnf (расположение этого файла отличается в разных ОС и БД, percona, mysql и т. Д.)
Также посмотрите этот ответ от администраторов базы данных: https://dba.stackexchange.com/a/1559, и если вы хотите узнать больше о том, как отладить происхождение спящих соединений, проверьте эту отличную статью: https: // www. percona.com/blog/2007/02/08/debugging-sleeping-connections-with-mysql/
«Если ваши соединения постоянны (открываются через mysql_pconnect), вы можете уменьшить эти цифры до чего-то разумного, например, 600 (10 минут) или даже 60 (1 минута). Или, если ваше приложение работает нормально, вы можете оставить значение по умолчанию. Это вам решать."
Попробуйте запустить индексатор из консоли, чтобы увидеть, выводит ли он какую-либо ошибку:
php shell/indexer info # this will output the list of indexes then
php shell/indexer --reindex {index_name}
настройте свой MySQL-сервер, установив более короткое время ожидания
wait_timeout
иinteractive_timeout
mysql> показывать переменные like
"%timeout%"
;Установить с:
(а также укажите в файле конфигурации время перезагрузки вашего сервера)
Но вы лечите симптомы вместо основной причины - почему связи открыты? Если сценарий PHP закончен, они не должны закрыться? Убедитесь, что ваш веб-сервер не использует пулы соединений ...
источник