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