Monitoramento de pool de conexões
Nesta página
- Visão geral
- Exemplos de inscrições de eventos
- Descrições de evento
- Documentos de exemplos de eventos
- connectionPoolCreated
- connectionPoolReady
- connectionPoolClosed
- connectionCreated
- connectionReady
- connectionClosed
- connectionCheckOutStarted
- connectionCheckOutFailed
- connectionCheckedOut
- connectionCheckedIn
- connectionPoolCleared
Visão geral
Este guia mostra como monitorar o pool de conexões do driver. Um pool de conexões é um pool de conexões TCP abertas que seu driver mantém com uma instância do MongoDB. Os pools de conexões ajudam a reduzir o número de negociações de rede que seu aplicativo precisa executar e podem ajudá-lo a ser executado mais rapidamente.
As seções a seguir demonstram como registrar eventos de pool de conexões em seu aplicativo e explorar as informações fornecidas nesses eventos.
Exemplos de inscrições de eventos
Você pode acessar um ou mais eventos do pool de conexões usando o driver assinando-os no seu aplicativo. O exemplo a seguir demonstra a conexão com um conjunto de réplicas e a assinatura de um dos eventos de monitoramento do pool de conexões criados pelo MongoDB deployment:
const { MongoClient } = require("mongodb"); // Replace the following with your MongoDB deployment's connection string const uri = "mongodb+srv://<clusterUrl>/?replicaSet=rs&writeConcern=majority"; const client = new MongoClient(uri); // Replace <event name> with the name of the event you are subscribing to const eventName = "<event name>"; // Subscribe to the event client.on(eventName, (event) => console.log("\nreceived event:\n", event) ); async function run() { try { // Establish and verify connection await client.db("admin").command({ ping: 1 }); console.log("\nConnected successfully!\n"); } finally { // Ensures that the client will close when you finish/error await client.close(); } } run().catch(console.dir);
Os eventos de monitoramento do pool de conexões podem ajudá-lo a depurar e compreender o comportamento do pool de conexões do seu aplicativo. O exemplo a seguir usa eventos de monitoramento do pool de conexões para retornar uma contagem de conexões com check-out no pool:
function connectionPoolStatus(client) { let checkedOut = 0; function onCheckout() { checkedOut++; } function onCheckin() { checkedOut--; } function onClose() { client.removeListener('connectionCheckedOut', onCheckout); client.removeListener('connectionCheckedIn', onCheckin); checkedOut = NaN; } // Decreases count of connections checked out of the pool when connectionCheckedIn event is triggered client.on('connectionCheckedIn', onCheckin); // Increases count of connections checked out of the pool when connectionCheckedOut event is triggered client.on('connectionCheckedOut', onCheckout); // Cleans up event listeners when client is closed client.on('close', onClose); return { count: () => checkedOut, cleanUp: onClose }; }
Descrições de evento
Você pode assinar qualquer um dos seguintes eventos de monitoramento do pool de conexões:
Nome do evento | Descrição |
---|---|
connectionPoolCreated | Criado quando um pool de conexões é criado. |
connectionPoolReady | Criado quando um pool de conexões estiver pronto. |
connectionPoolClosed | Criado quando um pool de conexões é fechado antes da destruição da instância do servidor. |
connectionCreated | Criado quando uma conexão é criada, mas não necessariamente quando é usada para uma operação. |
connectionReady | Criado após uma conexão ter concluído com êxito um handshake e estar pronta para ser usada em operações. |
connectionClosed | Criado quando uma conexão é fechada. |
connectionCheckOutStarted | Criado quando uma operação tenta adquirir uma conexão para execução. |
connectionCheckOutFailed | Criado quando uma operação falha ao estabelecer uma conexão para execução. |
connectionCheckedOut | Criado quando uma operação adquire com sucesso uma conexão para execução. |
connectionCheckedIn | Criado quando uma conexão é verificada novamente no pool depois que uma operação é executada. |
connectionPoolCleared | Criado quando um pool de conexões é limpo. |
Documentos de exemplos de eventos
As seções abaixo mostram amostras de saída para cada tipo de evento de monitoramento do pool de conexões.
connectionPoolCreated
ConnectionPoolCreatedEvent { time: 2023-02-13T15:54:06.944Z, address: '...', options: {...} }
connectionPoolReady
ConnectionPoolReadyEvent { time: 2023-02-13T15:56:38.440Z, address: '...' }
connectionPoolClosed
ConnectionPoolClosedEvent { time: 2023-02-13T15:56:38.440Z, address: '...' }
connectionCreated
ConnectionCreatedEvent { time: 2023-02-13T15:56:38.291Z, address: '...', connectionId: 1 }
connectionReady
ConnectionReadyEvent { time: 2023-02-13T15:56:38.291Z, address: '...', connectionId: 1, durationMS: 60 }
connectionClosed
ConnectionClosedEvent { time: 2023-02-13T15:56:38.439Z, address: '...', connectionId: 1, reason: 'poolClosed', serviceId: undefined }
connectionCheckOutStarted
ConnectionCheckOutStartedEvent { time: 2023-02-13T15:56:38.291Z, address: '...', }
connectionCheckOutFailed
ConnectionCheckOutFailedEvent { time: 2023-02-13T15:56:38.291Z, address: '...', reason: ..., durationMS: 60 }
connectionCheckedOut
ConnectionCheckedOutEvent { time: 2023-02-13T15:54:07.188Z, address: '...', connectionId: 1, durationMS: 60 }
connectionCheckedIn
ConnectionCheckedInEvent { time: 2023-02-13T15:54:07.189Z, address: '...', connectionId: 1 }
connectionPoolCleared
ConnectionPoolClearedEvent { time: 2023-02-13T15:56:38.439Z, address: '...', serviceId: undefined, interruptInUseConnections: true, }