Spec-Zone.ru › Ruby on Rails 8.1

class ActiveRecord::ConnectionAdapters::ConnectionPool::Reaper

Родительский класс:
Object

Сборщик пула подключений 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`).

Атрибуты

frequency [R]
pool [R]

Общедоступные методы класса

new (pool, frequency) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool/reaper.rb, line 36
def initialize(pool, frequency)
  @pool      = pool
  @frequency = frequency
end

Общедоступные методы экземпляра

run () Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API