文档菜单
文档首页
/ / /
C++ 驱动程序
/

连接池

在本页

  • mongocxx::clientmongocxx::pool
  • 连接池与线程安全
  • 配置连接池
  • 使用连接池

独立的mongocxx::client使用单线程算法来监控其连接的集群状态。当连接到副本集时,每60秒线程会“停止世界”以检查集群状态。另一方面,mongocxx::pool为集群中的每个服务器使用单独的后台线程,每个线程每10秒检查其监控的服务器状态。由于在后台监控集群而不是“停止世界”具有性能优势,如果您的应用程序可以访问多个线程,即使您的应用程序仅使用一个线程,也强烈建议使用mongocxx::pool而不是一组独立客户端。

mongocxx::pool 可在多个线程间共享,并用于创建客户端。然而,每个 mongocxx::client 只能在单个线程中使用。请参阅线程安全文档 了解如何以线程安全的方式使用 mongocxx::client

连接池中的客户端数量由 URI 参数 minPoolSizemaxPoolSize 决定。当驱动器空闲或完全使用时,minPoolSizemaxPoolSize 选项设置资源使用目标。当完全使用时,可提供最多 maxPoolSize 个客户端。当客户端返回到池中时,它们将被销毁,直到池再次缩小到 minPoolSize。

maxPoolSize

由 mongocxx::pool 创建的客户端的最大数量(包括池中和已检查出的)。默认值是 100。一旦达到这个值,mongocxx::pool::acquire 将阻塞,直到另一个线程将客户端返回到池中。

minPoolSize

设置空闲时池的目标大小。一旦创建了这么多客户端,池中就不会少于这么多客户端。如果创建了 minPoolSize 以上的额外客户端,当它们返回到池中时将被销毁。默认值是 "0",这将禁用此功能。当禁用时,客户端永远不会被销毁。

要使用连接池,首先创建一个 mongocxx::pool,将 URI 作为参数传递。然后,调用 mongocxx::pool::acquire 从池中获取客户端。客户端将在超出作用域时自动返回到池中。

请参阅连接池示例 以获取更多详细信息。

返回

稳定的API