Pool de Conexões
Nesta página
mongocxx::client
vs mongocxx::pool
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.
Pools de conexões e segurança de threads
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.
Configurar um pool de conexões
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.
maxPoolSize | 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. |
minPoolSize | 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. |
Usando um pool de conexões
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.
Consulte o exemplo dopool de conexões para obter mais detalhes.