Ruby on Rails,我可以获取Mongoid池中的当前连接数吗?

问题描述 投票:0回答:2

我在mongoid.yml中将min_pool_size设置为100,但在运行db.serverStatus()时在mongo中。我的连接数只有30。有没有办法检查我池中有多少个连接?

ruby-on-rails mongodb mongoid mongoid6
2个回答
0
投票
要找出实际上已打开给定服务器多少个套接字,请先获取其连接池:

pool = Mongoid.default_client.cluster.next_primary.pool # => #<Mongo::Server::ConnectionPool:0x46944310901400 queue=#<Mongo::Server::ConnectionPool::Queue:0x46944310901380 min_size=20 max_size=100 wait_timeout=1 current_size=20>>

然后查看连接中的套接字:

pool.send(:queue).queue.map { |conn| conn.send(:socket) }.compact.count
# => 0

Flight.count

pool.send(:queue).queue.map { |conn| conn.send(:socket) }.compact.count
# => 1

每台服务器都有一个附加的连接/套接字已打开,用于监视目的,应用程序不可访问。

请注意,上面发布的所有代码(next_primary,插入连接套接字等)都不是驱动程序公共API的一部分,并且可能随时更改。        

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.