Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ / /
Rust 驱动程序
/ /

连接监控/池化(Pooling)

本指南向您展示如何使用 Rust 驱动程序来监控驱动程序的连接池。 连接池是驱动程序与 MongoDB 实例维护的一组开放式传输控制协议 (TCP) 连接。 连接池有助于减少应用程序需要创建的新连接数量,这可能会提高应用程序的运行速度。

您可以使用有关应用程序中连接池变更的信息,也可以监控连接池以了解有关驱动程序如何使用连接的更多信息。

本指南包括以下部分:

  • 事件描述描述了驱动程序可以生成的连接池事件

  • 事件订阅示例提供了示例代码,演示如何订阅连接池事件

  • 事件文档示例提供了每个连接池事件的示例

  • 附加信息提供了本指南中提到的类型和方法的资源和 API 文档链接

您可以订阅以下一个或多个连接池监控事件:

事件名称
说明

在创建连接池时创建。

当连接池准备就绪时创建。

当连接池被清除时创建。

在销毁服务器实例之前关闭连接池时创建。

在创建连接时创建,但不一定是在用于操作时创建。

在连接成功完成握手并准备好用于操作后创建。

在连接关闭时创建。

当操作尝试获取用于执行的连接时创建。

当操作无法获取用于执行的连接时创建。

当操作成功获取用于执行的连接时创建。

在执行操作后,当连接被检回连接池时创建。

您可以通过在应用程序中订阅一个或多个连接池事件来访问这些事件。 以下示例连接到 MongoDB 部署并订阅 ConnectionCreatedEvent事件类型:

struct ConnectionCreatedHandler;
impl CmapEventHandler for ConnectionCreatedHandler {
fn handle_connection_created_event(&self, event: ConnectionCreatedEvent) {
eprintln!("Connection created: {:?}", event);
}
}
let handler: Arc<dyn CmapEventHandler> = Arc::new(ConnectionCreatedHandler);
client_options.cmap_event_handler = Some(handler);
let client = Client::with_options(client_options)?;
// ... perform actions with the client to generate events

以下几节显示了每种类型的连接池监控事件的样本输出。

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 文档:

后退

命令监控

在此页面上