У меня есть приложение, которое постоянно вставляет в таблицу статистики. Среднее количество открытых соединений обычно составляет от 20 до 22.
В PHP также есть сценарий обработки, запускаемый cron каждые 30 минут. Примерно в 2 часа ночи по всемирному координированному времени обработка занимает около 10 минут, что является самым продолжительным периодом времени в течение дня.
Примерно в это время я получаю около 8000 PDOException: SQLSTATE[08004] [1040] Too many connections
ошибки.
В max_connections
установлен на 500.
Я заметил это, делая SHOW PROCESSLIST;
Обычно я не вижу запросов в столбце «Информация». Пока cron работает, я вижу запрос для cron в Info
столбец, а затем вставки SQL быстро накапливаются под ним.
Я действительно не очень разбираюсь в настройке MySQL, но похоже, что вставки в таблицу статистики ставятся в очередь и превышают максимальное ограничение на количество подключений во время работы скрипта Cron.
Что может быть причиной этого и какие параметры конфигурации следует изменить?
Можете ли вы проверить параметры ниже? попробуйте увеличить значение max_user_connections и, если приложение долго удерживает соединение, уменьшите wait_timeout.
max_user_connections=[value]
wait_timeout = [value]