Ich habe eine Rails 4 App, die ich auf Heroku hosste. Sie geben einige spezifische Ratschläge zum Verwalten Ihres DB-Verbindungspools bei Verwendung eines Multi-Thread-Servers (Puma) Ссылка
Wenn ich den Belastungstest für meine App durchgeführt habe, habe ich einen Fehler erhalten - ich kann keine Verbindung zur Datenbank herstellen. Wenn jede Seite aufgerufen wird, initialisiert rails den aktiven Datensatz, auch wenn ich auf dieser Seite keine Abfragen anstelle oder auf Modelle referenziere.
Meine Frage ist:
Wie kann ich eine Art Whitelist (oder Blacklist) erstellen, so dass der aktive Datensatz nicht mit einer db-Verbindung für diese spezifischen Controller-Aktionen initialisiert wird? In einem Initialisierer?
Idealerweise würde ich den billigeren Postgres-Dienst auf heroku (40 Verbindungen) laufen lassen, weil ich weiß, dass meine App die db nicht sehr oft benutzt. Wenn der Datenverkehr höher als die der 40 Verbindungen wird, beginnt die Sache mit einem Fehler, was für eine App, die die Datenbank bei diesen Anfragen nicht verwenden würde, albern erscheint.
Ich habe gelesen, wie man den aktiven Datensatz für eine gesamte App deaktiviert: ActiveRecord for Rails 4 deaktivieren
Aber wie aktiviere ich das selektiv? Gibt es hier andere Leistungsüberlegungen (durch nicht eifriges Laden dieser Dinge oder andere Fehler)?
In dir application_controller.rb
Fügen Sie dann für jeden Controller / jede Aktion, die die db-Verbindung benötigt,
hinzu %Vor%Dies sollte die Verbindung für eine bestimmte Datenbankanforderung herstellen und die Verbindung für jede Anforderung trennen, die sie nicht benötigt. Dabei werden auch mehrere db-Anforderungen in einer Zeile ohne Aktion und mehrere nicht db-Anforderungen in einer Zeile ohne Aktion behandelt.
Tags und Links ruby-on-rails activerecord postgresql heroku connection-pooling