Ruby Rails,我可以获取 Mongoid 池中的当前连接数吗?
Ruby on Rails, Can I get the current count of connections in Mongoid pool?
我在 mongoid.yml 中将 min_pool_size 设置为 100,但在 mongo 中当 运行 db.serverStatus() 时我只得到 30 个连接。有吗一种检查池中有多少连接的方法?
连接到管理数据库并 运行 db.serverStatus():
> var status = db.serverStatus()
> status.connections
{"current" : 21, "available" : 15979}
>
在 Ruby 驱动程序(以及随后的 Mongoid)中设置 min_pool_size 并不意味着实际创建了许多网络连接。设置 min_pool_size 会创建那么多驱动程序连接对象,但它们会按需连接到集群。此行为已在驱动程序版本 2.11.0 中修复 - 请参阅 https://jira.mongodb.org/browse/RUBY-1605.
要了解给定服务器实际打开了多少套接字,首先获取其连接池:
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
每台服务器都有一个额外的 connection/socket 打开用于监控目的,应用程序无法访问。
请注意,上面发布的所有代码(next_primary
、插入连接套接字等)都不是驱动程序的一部分 public API 并且可能随时更改.
我在 mongoid.yml 中将 min_pool_size 设置为 100,但在 mongo 中当 运行 db.serverStatus() 时我只得到 30 个连接。有吗一种检查池中有多少连接的方法?
连接到管理数据库并 运行 db.serverStatus():
> var status = db.serverStatus()
> status.connections
{"current" : 21, "available" : 15979}
>
在 Ruby 驱动程序(以及随后的 Mongoid)中设置 min_pool_size 并不意味着实际创建了许多网络连接。设置 min_pool_size 会创建那么多驱动程序连接对象,但它们会按需连接到集群。此行为已在驱动程序版本 2.11.0 中修复 - 请参阅 https://jira.mongodb.org/browse/RUBY-1605.
要了解给定服务器实际打开了多少套接字,首先获取其连接池:
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
每台服务器都有一个额外的 connection/socket 打开用于监控目的,应用程序无法访问。
请注意,上面发布的所有代码(next_primary
、插入连接套接字等)都不是驱动程序的一部分 public API 并且可能随时更改.