簡體   English   中英

Heroku Rails-關閉Active Record Postgres連接

[英]Heroku Rails - Turn off Active Record Postgres connection

我在heroku上托管了Rails 4應用程序。 他們為使用多線程服務器(puma)時如何管理數據庫連接池提供了一些具體建議。https://devcenter.heroku.com/articles/concurrency-and-database-connections

當我為我的應用程序執行負載測試時,出現錯誤-無法連接到數據庫。 當每個頁面都被點擊時,Rails會初始化活動記錄,即使我沒有對該頁面進行任何查詢或引用任何模型也是如此。

我的問題是:

如何創建一種白名單(或黑名單),以便不使用這些特定控制器操作的數據庫連接來初始化活動記錄? 在初始化器中?

理想情況下,我會在heroku(40個連接)上運行便宜的postgres服務,因為我知道我的應用程序並不經常使用db。 如果流量超過40個連接,一切將開始出錯,這對於不打算在這些請求上使用db的應用程序來說似乎很愚蠢。

我閱讀了有關如何為整個應用程序禁用活動記錄的信息: 禁用ActiveRecord for Rails 4

但是如何有選擇地啟用它? 這里是否還有其他不同的性能考慮因素(不急於加載這些東西或任何其他陷阱)

在你的application_controller.rb

before_filter :maybe_disconnect_db

def maybe_disconnect_db
  ActiveRecord::Base.remove_connection() if ActiveRecord::Base.connected?
end

def maybe_connect_db
  ActiveRecord::Base.establish_connection() unless ActiveRecord::Base.connected?
end

然后為每個需要數據庫連接的控制器/動作添加

skip_before_filter :maybe_disconnect_db, #only or unless filter here
before_filter      :maybe_connect_db,    #only or unless filter here

這應該為任何特定的數據庫請求建立連接,並為不需要此請求的任何請求斷開連接,同時還可以連續執行多個db請求而不執行任何操作,並且連續處理多個非db請求而不執行任何操作。

ActiveRecord :: Base.remove_connection

ActiveRecord :: Base。Establishment_connection

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM