Активная запись Не удалось получить соединение с базой данных в течение 5000 секунд - PullRequest
3 голосов
/ 10 февраля 2020

В последние несколько недель я вижу эту ошибку: «Не удалось получить соединение с базой данных в течение 5000 секунд». Я пробовал следующие решения.

Согласно Sidekiq Документы Я уменьшил параллелизм до 10 и увеличил MySql Размер пула БД до 12. Но я все еще получал эту ошибку, поэтому я увеличил размер пула БД до 27. Но все же проблема есть. Испытанные решения от этого и этого ответа. На моем сервере Sidekiq не запущен какой-либо другой процесс, который может использовать AR-соединения. Я не прячу какие-либо темы извне. Ниже приведены конфигурации, которые у меня есть

Sidekiq version - 3.4.2
Rails version - 4.2.4
Active Record version - 4.2.4
Database pool size - 27
Sidekiq concurrency - 10

. Любая помощь с этим будет оценена.

1 Ответ

0 голосов
/ 20 февраля 2020

Я подозреваю, что это утечка соединения со стороны сервера.

Sidekiq::Middleware::Server::ActiveRecord - это промежуточное ПО, которое отвечает за возврат соединений в пул после завершения задания. Это должно быть включено по умолчанию.

Когда вы запускаете сервер с флагом -v,

bundle exec sidekiq -v -C config_file

будет печатать все промежуточные программы, которые будут вызваны. Можете ли вы проверить, присутствует ли это промежуточное ПО в списке?

...