Rails4:如何获取ActiveRecord连接池中的空闲连接数?

问题描述:

我可以看到为Rails 5(http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html#method-i-stat)定义的stat方法。这会报告各种状态下的连接。这在Rails 4或更早版本中不可用。有没有其他的方法来获取Rails 4中的信息?Rails4:如何获取ActiveRecord连接池中的空闲连接数?

您可以修补同在Rails4

方法star这是你可以在Rails4加也。

ActiveRecord::Base.connection_pool.synchronize do 
    { connections: ActiveRecord::Base.connection_pool.connections.size } 
end 

=> {:连接=> 1}

Rails5 stat定义

# File activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb, line 583 
def stat 
    synchronize do 
    { 
     size: size, 
     connections: @connections.size, 
     busy: @connections.count { |c| c.in_use? && c.owner.alive? }, 
     dead: @connections.count { |c| c.in_use? && !c.owner.alive? }, 
     idle: @connections.count { |c| !c.in_use? }, 
     waiting: num_waiting_in_queue, 
     checkout_timeout: checkout_timeout 
    } 
    end 
end 
+0

我不得不猴补丁都MysqlAdapter和连接池。但它的工作。事实上,我可以通过扩展,获得保持连接的线程列表。这一切都有帮助。 – CppNoob