5

В настоящее время я выполняю задания backgroud с sidekiq, а его запуск «ActiveRecord :: ConnectionTimeoutError».Ошибка тайм-аута подключения к базе данных в postgresql

This is my current database.yml file, 

production: 
    adapter: postgresql 
    encoding: unicode 
    database: app_production 
    username: password 
    password: 
    host: app.domain.com 
    pool: 25 

Это мой файл sidekiq.yml,

production: 
    concurrency: 25 
    timeout: 300 

Во время работы его ошибка таймаута дает соединение

Эта ошибка была подвожу в Backgroud,

could not obtain a database connection within 5 seconds (waited 5.82230675 seconds). The max pool size is currently 25; consider increasing it. 

ответ

8

Максимальное количество подключений к вашей базе данных postgres - 25. Но вы установили ваш параллелизм для sidekiq как 25. Итак, если у вас есть все параллельные потоки для работы sidekiq, у вас не будет никакого подключения к базе данных, доступного для вашего сервера приложений.

Либо уменьшите параллелизм sidekiq, либо увеличьте размер пула (рекомендую увеличить размер пула).

Postgres разрешает 100 одновременных соединений по умолчанию

+0

@vimsa На самом деле в sidekiq сам это давало ошибку. Есть ли возможность увеличить время подключения к базе данных с 5 секунд до 25 секунд. Вы проверили сообщение об ошибке «не удалось получить соединение с базой данных» в течение 5 секунд (ждали 5.82230675 секунд) ** « – SaravanaKumAr

+0

измените свой« таймаут: 300 »на' sidekiq.yml' на 'timeout: 1500'. – usha

+0

@SaravanaKumAr: Не удалось установить соединение в течение 5 секунд, так как он достиг своего максимального соединения. https://devcenter.heroku.com/articles/concurrency-and-database-connections – usha

Смежные вопросы