Monitoramento de conexão
Nesta página
- Visão geral
- Inscrever-se para receber eventos
- Descrições de evento
- Documentos de exemplos de eventos
- connectionPoolCreated
- connectionPoolReady
- connectionPoolCleared
- connectionPoolClosed
- connectionCreated
- connectionReady
- connectionClosed
- connectionCheckOutStarted
- connectionCheckOutFailed
- connectionCheckedOut
- connectionCheckedIn
- Informações adicionais
- Documentação da API
Visão geral
Este guia mostra como usar o driver Go para monitorar o pool de conexões do driver. Um pool de conexões é um conjunto de conexões abertas do Protocolo de controle de transmissão (TCP) que seu driver mantém com uma instância MongoDB. O pool de conexões ajuda a reduzir o número de novas conexões que sua aplicação precisa criar, o que pode fazer com que sua aplicação seja executada mais rapidamente.
Você pode usar informações sobre eventos do pool de conexões em seu aplicativo para otimizar o desempenho ou entender o ciclo de vida do cliente.
Inscrever-se para receber eventos
Você pode acessar detalhes sobre eventos do pool de conexões assinando-os em seu aplicativo. O exemplo seguinte demonstra como assinar o evento PoolEvent
instanciando um PoolMonitor
e conectando-se a um sistema:
var eventArray []*event.PoolEvent cxnMonitor := &event.PoolMonitor{ Started: func(e *event.PoolEvent) { eventArray = append(eventArray, e) }, } clientOpts := options.Client().ApplyURI(uri).SetPoolMonitor(cxnMonitor) client, err := mongo.Connect(context.TODO(), clientOpts)
Descrições de evento
A tabela a seguir descreve os tipos de eventos de pool que o driver emite:
Tipo de evento de pool | Descrição |
---|---|
ConnectionPoolCreated | Criado quando um pool de conexões é criado. |
ConnectionPoolReady | Criado quando um pool de conexões estiver pronto. |
ConnectionPoolCleared | Criado quando todas as conexões no pool são fechadas. |
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 concluir 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 não pode adquirir 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. |
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
*event.PoolEvent { "type": "ConnectionPoolCreated", "address": "...", "connectionId": 0, "options": { "maxPoolSize": 100, "minPoolSize": 0, "maxIdleTimeMS": 0 }, "reason": "", "serviceId": null, "error": null }
connectionPoolReady
*event.PoolEvent { "type": "ConnectionPoolReady", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
connectionPoolCleared
*event.PoolEvent { "type": "ConnectionPoolCleared", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
connectionPoolClosed
*event.PoolEvent { "type": "ConnectionPoolClosed", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
connectionCreated
*event.PoolEvent { "type": "ConnectionCreated", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
connectionReady
*event.PoolEvent { "type": "ConnectionReady", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
connectionClosed
*event.PoolEvent { "type": "ConnectionClosed", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
connectionCheckOutStarted
*event.PoolEvent { "type": "ConnectionCheckOutStarted", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
connectionCheckOutFailed
*event.PoolEvent { "type": "ConnectionCheckOutFailed", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
connectionCheckedOut
*event.PoolEvent { "type": "ConnectionCheckedOut", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
connectionCheckedIn
*event.PoolEvent { "type": "ConnectionCheckedIn", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
Informações adicionais
Para saber mais sobre como monitorar uma implantação do MongoDB, consulte o artigo Como monitorar o MongoDB .
Para saber mais sobre como se conectar ao MongoDB, consulte oGuia de Conexão .
Documentação da API
Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo:
TipoPoolMonitor
PoolEvent tipo
SetPoolMonitor() método