Docs 菜单
Docs 主页
/ / /
C++ 驱动程序
/

连接池

在此页面上

  • mongocxx::client vs mongocxx::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以从池中接收客户端。 当客户端超出范围时,将自动返回到池中。

有关更多详情,请参阅 连接池示例

后退

Stable API