Menu Docs
Página inicial do Docs
/ / /
Driver C++

Pool de Conexões

Nesta página

  • mongocxx::client vs mongocxx::pool
  • Pools de conexões e segurança de threads
  • Configurar um pool de conexões
  • Usando um pool de conexões

Um mongocxx::client standalone usa um algoritmo de thread único para monitorar o estado do cluster ao qual está conectado. Quando conectado a um conjunto de réplicas, o thread "para o mundo" a cada 60 segundos para verificar o status do cluster. Um mongocxx::pool, por outro lado, usa um thread de background separado para cada servidor no cluster, cada um dos quais verifica o status do servidor que monitora a cada 10 segundos. Devido às vantagens de desempenho de monitorar o cluster em segundo plano em vez de "parar o mundo", é altamente recomendável usar um mongocxx::pool em vez de um conjunto de clientes autônomos se o aplicativo tiver acesso a vários threads, mesmo que o aplicativo apenas usa um thread.

Um mongocxx::pool pode ser compartilhado entre vários threads e usado para criar clientes. No entanto, cada mongocxx::client só pode ser usado em um único thread. Consulte adocumentação de segurança de thread para obter detalhes sobre como usar um mongocxx::client de maneira segura para threads.

O número de clientes em um pool de conexões é determinado pelos parâmetros de URI minPoolSize e maxPoolSize. As opções minPoolSize e maxPoolSize definem metas de uso de recursos para quando o driver está ocioso ou totalmente utilizado. Quando totalmente utilizados, até maxPoolSize clientes estão disponíveis. Quando os clientes retornam ao pool, eles são destruídos até que o pool reduza novamente para o minPoolSize.

Tamanho máximo da piscina
O número máximo de clientes criados por um mongocxx::pool (tanto no pool quanto com check-out). O valor padrão é 100. Quando for atingido, mongocxx::pool::acquire blocos até que outro thread retorne um cliente ao pool.
Tamanho mínimo da piscina
Define um tamanho alvo para o pool quando ocioso. Depois que esses clientes tiverem sido criados, nunca haverá menos do que esses clientes no pool. Se forem criados clientes adicionais acima do minPoolSize, eles serão destruídos quando retornados ao pool. O valor padrão é "0", que desabilita esse recurso. Quando desabilitados, os clientes nunca são destruídos.

Para usar um pool de conexões, primeiro crie um mongocxx::pool, passando o URI como argumento. Em seguida, chame mongocxx::pool::acquire para receber um cliente do pool. O cliente será automaticamente devolvido ao pool quando sair do escopo.

Veja o exemplo de pool de conexões para obter mais detalhes.

Voltar

Segurança de threads e forquilhas

Próximo

Trabalhando com BSON