So finden Sie aktuelle Verbindungs-pool-Größe auf heroku
Haben wir eine rails 3.2(.11) app mit vielen dynos läuft auf heroku Bambus-stack, der die Verbindung zu einer MySQL-RDS-server. Es scheint einige Probleme mit unserer aktuellen Datenbank-verbindungen, so dass wir versuchen zu Debuggen genau, wie viele verbindungen jeder dyno dreht. Ich weiß, ich kann die Größe eines connection-pool in der DATABASE_URL
config auf heroku, aber kann nicht scheinen, um herauszufinden, wie viele verbindungen sind derzeit standardmäßig verwendet.
Zwei wichtigsten Fragen:
1) Wie finde ich die Größe des verbindungspools verwendet heroku?
2) gibt es einen Grund, warum ein dyno wäre eine Verbindung Poolgröße größer als 1? Mein Verständnis ist, dass die Schienen können nur ausgeführt werden, 1 Antrag zu einem Zeitpunkt also, eine Datenbank-Verbindung sollten alle, die benötigt wird, soweit ich das sehen kann.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen die Größe des Pools, starten Sie eine heroku console
heroku run rails c
und ausführen:Manche Webserver wie Puma, Multithreading, also die DB-pool-size matters. Sie können auch einen multi-threaded-Arbeiter wie Sidekiq, die auch betroffen von der pool-Größe.
Beachten Sie, dass Heroku ignoriert Ihre Datenbank.yml-Datei. Um die pool-Größe, die Sie anfügen können
?pool=25
zu den DATABASE_URL in Ihrem heroku-app ist eine Konfiguration.config/database.yml
als pro diese heroku devcenter-Artikel.ActiveRecord::Base.connection_pool.size
funktioniert einwandfrei.Diese Informationen werden über eine Schnittstelle in Rails https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_handling.rb#L98-L106 es ist in Rails 3+
Können Sie diese verwenden, um die aktuelle pool-Größe, ohne eval oder das Vertrauen auf die Existenz einer Art Instanz-variable jedoch in rails 3 zurückgeben nil, wenn es nicht explizit festgelegt wurden,