5

當前正在運行帶有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 

在運行它給人連接超時錯誤

這個錯誤我得到的研究背景,

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

將'sidekiq.yml'中的'timeout:300'更改爲'timeout:1500'。 – usha

+0

@SaravanaKumAr:它無法在5秒內建立連接,因爲它已達到其最大連接。 https://devcenter.heroku.com/articles/concurrency-and-database-connections – usha