class ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper
Сборщик пула подключений Active Record
Сборщик — это синглтон, работающий в фоновом режиме процесса и отвечающий за общее обслуживание всех пулов подключений.
Он возвращает подключения, арендованные потоками, которые завершили работу, гарантируя, что некорректно работающий поток не сможет навсегда занять слот в пуле. По определению, для этого необходимо взаимодействовать с подключениями, которые в данный момент арендованы, но это безопасно, поскольку известно, что поток-владелец завершил работу.
Кроме того, он следит за состоянием доступных / неарендованных подключений:
* retiring connections that have been idle[1] for too long * creating occasional activity on inactive[1] connections * keeping the pool prepopulated up to its minimum size * proactively connecting to the target database from any pooled connections that had lazily deferred that step * resetting or replacing connections that are known to be broken
[1]: Здесь слова «idle» и «inactive» обозначают соответственно подключения, к которым приложение некоторое время не обращалось (простаивающие), и подключения, которые некоторое время не связывались с удалённым сервером (неактивные). Первые дают возможность сократить количество подключений (`idle_timeout`); вторые несут риск того, что сервер или межсетевой экран закроет подключение, которое мы рассчитываем использовать (этого помогает избежать `keepalive`).
Атрибуты
Общедоступные методы класса
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool/reaper.rb, line 36 def initialize(pool, frequency) @pool = pool @frequency = frequency end
Общедоступные методы экземпляра
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool/reaper.rb, line 110 def run return unless frequency && frequency > 0 self.class.register_pool(pool, frequency) end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.