Overview
本指南向您展示如何使用 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
PoolReadyEvent {   address: ... } 
PoolClearedEvent
PoolClearedEvent {   address: ...,   service_id: ..., } 
PoolClosedEvent
PoolClosedEvent {   address: ... } 
ConnectionCreatedEvent
ConnectionCreatedEvent {   address: ...,   connection_id: 1 } 
ConnectionReadyEvent
ConnectionReadyEvent {   address: ...,   connection_id: 1 } 
ConnectionClosedEvent
ConnectionClosedEvent {   address: ...,   connection_id: 1,   reason: ...,   /* private fields */ } 
ConnectionCheckOutStartedEvent
ConnectionCheckOutStartedEvent {   address: ..., } 
ConnectionCheckOutFailedEvent
ConnectionCheckOutFailedEvent {   address: ...,   reason: ...,   /* private fields */ } 
ConnectionCheckedOutEvent
ConnectionCheckedOutEvent {   address: ...,   connection_id: 1 } 
ConnectionCheckedInEvent
ConnectionCheckedInEvent {   address: ...,   connection_id: 1 } 
更多信息
要了解有关监控 MongoDB 部署的更多信息,请参阅如何监控 MongoDB一文。
要学习;了解有关连接到MongoDB的更多信息,请参阅连接指南。
要了解有关提高应用程序性能的更多信息,请参阅性能注意事项指南。
API 文档
要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档: