连接池监控
本页内容
概述
本指南向您展示如何使用Rust驱动来监控驱动程序的连接池。连接池是驱动程序与MongoDB实例维护的一组打开的传输控制协议(TCP)连接。连接池有助于减少应用程序需要创建的新连接数量,这可能使应用程序运行更快。
您可以在应用程序中使用连接池更改的信息,或者监控连接池以了解驱动程序如何使用连接。
本指南包括以下部分
事件描述
您可以监控以下连接池事件
事件名称 | 描述 |
---|---|
在创建连接池时创建。 | |
在连接池准备就绪时创建。 | |
在清除连接池时创建。 | |
在关闭连接池,但在销毁服务器实例之前创建。 | |
在创建连接时创建,但不一定是用于操作时。 | |
在连接成功完成握手并准备好用于操作后创建。 | |
在关闭连接时创建。 | |
当操作尝试获取连接以执行时创建。 | |
当操作无法获取连接以执行时创建。 | |
当操作成功获取连接以执行时创建。 | |
在操作执行后,将连接检查回池中时创建。 |
事件监控示例
您可以通过将一个EventHandler
实例作为值分配给cmap_event_handler
客户端选项来监控连接池事件。为了构建一个处理所有连接池事件的EventHandler
,请使用callback()
或async_callback()
方法。
以下示例连接到MongoDB部署,指示客户端监控连接池事件,并打印每个事件
let mut client_options = ClientOptions::parse("<connection string>").await?; client_options.cmap_event_handler = Some(EventHandler::callback(|ev| println!("{:?}", ev))); let client = Client::with_options(client_options)?; // ... perform actions with the client to generate events
示例事件文档
以下各节显示了每种类型连接池监控事件的示例输出。
PoolCreatedEvent
PoolCreatedEvent { address: ..., options: {...} }
池准备事件
PoolReadyEvent { address: ... }
池清理事件
PoolClearedEvent { address: ..., service_id: ..., }
池关闭事件
PoolClosedEvent { address: ... }
连接创建事件
ConnectionCreatedEvent { address: ..., connection_id: 1 }
连接就绪事件
ConnectionReadyEvent { address: ..., connection_id: 1 }
连接关闭事件
ConnectionClosedEvent { address: ..., connection_id: 1, reason: ..., /* private fields */ }
连接退房开始事件
ConnectionCheckOutStartedEvent { address: ..., }
连接退房失败事件
ConnectionCheckOutFailedEvent { address: ..., reason: ..., /* private fields */ }
已检查出的连接事件
ConnectionCheckedOutEvent { address: ..., connection_id: 1 }
已检查入的连接事件
ConnectionCheckedInEvent { address: ..., connection_id: 1 }
附加信息
要了解有关监控 MongoDB 部署的更多信息,请参阅如何监控 MongoDB文章。
要了解有关连接到 MongoDB 的更多信息,请参阅连接指南.
要了解有关提高您应用程序性能的更多信息,请参阅关于性能考虑因素的指南。
API 文档
要了解更多关于本指南中提到的方法和类型,请参阅以下API文档