根據API文檔,rails收割機的目的是查找和恢復來自死亡線程的連接。收割機根據收割頻率運行。Rails Reaper不能正常工作
我遇到了數據庫連接數超過指定限制的情況,並且在空閒狀態下存在連接但收割者沒有重置這些連接。我嘗試手動運行收割者,但它似乎沒有任何效果。
reaper = ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper.new(ActiveRecord::Base.connection, 10)
reaper.run
它不會有任何影響使用
ActiveRecord::Base.connection.execute("SELECT * FROM pg_stat_activity WHERE pid <> pg_backend_pid()")
PgHero.total_connections
這是與ActiveRecord的收割者中的錯誤進行了驗證,或者它並不意味着這樣的工作嗎?如果是這種情況,編寫自定義收割者來恢復死連接的選擇如何? pg gem被用於連接到postgres數據庫。那是吃了連接的查詢是:
SHOW事務隔離級別
Rails的版本:4.2.3
PG寶石版本:0.17.1
Postgres的版本: 9.4.6
Rails應用服務器:Puma
你檢查了連接到數據庫的進程的PID嗎?你有沒有確定沒有任何死紅寶石進程?通常你不必自己收穫連接。你在你的代碼中做任何分叉?你的美洲獅如何建立?您需要在puma配置中使用正確的'before_fork' /'after_fork'代碼。 –
你可以給我們你的美洲獅配置,特別是你使用多少工人和線程? 'database.yml'中的連接池設置有多大? – BoraMa