Menu Docs
Página inicial do Docs
/ / /
Controlador Node.js
/ /

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

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.

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
};
}

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.

As seções abaixo mostram amostras de saída para cada tipo de evento de monitoramento do pool de conexões.

ConnectionPoolCreatedEvent {
time: 2023-02-13T15:54:06.944Z,
address: '...',
options: {...}
}
ConnectionPoolReadyEvent {
time: 2023-02-13T15:56:38.440Z,
address: '...'
}
ConnectionPoolClosedEvent {
time: 2023-02-13T15:56:38.440Z,
address: '...'
}
ConnectionCreatedEvent {
time: 2023-02-13T15:56:38.291Z,
address: '...',
connectionId: 1
}
ConnectionReadyEvent {
time: 2023-02-13T15:56:38.291Z,
address: '...',
connectionId: 1,
durationMS: 60
}
ConnectionClosedEvent {
time: 2023-02-13T15:56:38.439Z,
address: '...',
connectionId: 1,
reason: 'poolClosed',
serviceId: undefined
}
ConnectionCheckOutStartedEvent {
time: 2023-02-13T15:56:38.291Z,
address: '...',
}
ConnectionCheckOutFailedEvent {
time: 2023-02-13T15:56:38.291Z,
address: '...',
reason: ...,
durationMS: 60
}
ConnectionCheckedOutEvent {
time: 2023-02-13T15:54:07.188Z,
address: '...',
connectionId: 1,
durationMS: 60
}
ConnectionCheckedInEvent {
time: 2023-02-13T15:54:07.189Z,
address: '...',
connectionId: 1
}
ConnectionPoolClearedEvent {
time: 2023-02-13T15:56:38.439Z,
address: '...',
serviceId: undefined,
interruptInUseConnections: true,
}

Voltar

Monitoramento de comandos