Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Driver de sincronização Java
/ /

Pool de Conexões

Neste guia, você aprenderá como o driver Java usa pools de conexões para gerenciar conexões com o MongoDB deployment e como definir as configurações do pool de conexões em seu aplicação.

Um pool de conexões é um cache de conexões de banco de dados abertas mantidas pelo driver Java . Quando seu aplicação solicita uma conexão com o MongoDB, o driver Java obtém uma conexão do pool sem problemas, executa operações e retorna a conexão ao pool para reutilização.

Os pools de conexões ajudam a reduzir a latência de aplicação e o número de vezes que novas conexões são criadas pelo driver Java .

Cada instância do MongoClient tem um pool de conexão embutida para cada servidor em sua topologia MongoDB. Os pools de conexão abrem soquetes sob demanda para dar suporte a operações simultâneas do MongoDB em seu aplicativo multithread.

A opção maxPoolSize define o tamanho máximo de cada pool de conexões, que é padronizado como 100. Se o número de conexões em uso com um servidor atingir o valor de maxPoolSize, a próxima solicitação para esse servidor aguardará até que uma conexão fique disponível.

Cada instância MongoClient abre mais dois soquetes por servidor em sua topologia MongoDB para monitorar o estado do servidor.

Você pode especificar configurações para o pool de conexões usando uma string de conexão ou passando um objeto MongoClientSettings para o método MongoClients.create().

Selecione a aba Connection String ou MongoClientSettings para ver a sintaxe correspondente :

Veja a seguir as configurações de string de conexão que você pode usar para configurar o pool de conexões:

Contexto
Descrição

maxConnecting

Número máximo de conexões que um pool pode estabelecer simultaneamente.

Padrão: 2

maxIdleTimeMS

O número máximo de milissegundos que uma conexão pode permanecer inativa no pool antes de ser removida e fechada.

Padrão: 0

maxPoolSize

Número máximo de conexões abertas no pool. Se uma operação precisar de uma nova conexão enquanto o pool de conexões tiver maxPoolSize conexões abertas, a nova operação aguardará a abertura de uma nova conexão. Para limitar esse tempo de espera, use a configuração de tempo limite único. Para saber mais, consulte o guia Limitar o tempo de execução do servidor.

Padrão: 100

minPoolSize

Número mínimo de conexões abertas no pool. O valor de minPoolSize deve ser menor que o valor de maxPoolSize.

Padrão: 0

waitQueueTimeoutMS (obsoleto)

Esta opção está obsoleta. Você pode configurar esse tempo limite definindo o tempo limite no nível do cliente.

Tempo máximo de espera, em milissegundos, que uma operação pode esperar que uma conexão fique disponível. Um valor de 0 significa que não há limite.

Padrão: 120000 (120 segundos)

maxLifeTimeMS

Especifica a quantidade máxima de tempo, em milissegundos, o driver Java continuará usando uma pool de conexão antes de fechar a conexão. Um valor de 0 indica que não há limite superior de quanto tempo o driver pode manter uma pool de conexão aberta.

Padrão: 0

O código a seguir cria um cliente com um tamanho máximo de pool de conexões de 50.

ConnectionString connectionString = "mongodb://<host>:<port>/?maxPoolSize=50"
MongoClient mongoClient = MongoClients.create(connectionString)

Para obter mais informações sobre esses parâmetros, consulte a documentação da APIConnectionString .

Encadeie o método applyToConnectionPoolSettings() para modificar a maneira como o driver gerencia seu pool de conexões.

A tabela a seguir descreve os métodos que você pode conectar às suas configurações para modificar o comportamento do driver:

Método
Descrição

addConnectionPoolListener()

Adiciona um ouvinte para eventos relacionados ao pool de conexões.

applyConnectionString()

Usa as configurações de um objeto ConnectionString.

applySettings()

Usa as configurações do pool de conexões especificadas em um objeto ConnectionPoolSettings.

maintenanceFrequency()

Define a frequência para executar uma tarefa de manutenção.

maintenanceInitialDelay()

Define o tempo de espera antes de executar o primeiro trabalho de manutenção.

maxConnectionIdleTime()

Define o tempo máximo que uma conexão pode ficar ociosa antes de ser fechada.

maxConnectionLifeTime()

Define o tempo máximo que uma conexão em pool pode ficar ativa antes de ser fechada.

maxSize()

Define o número máximo de conexões associadas a uma conexão
pool.

Padrão: 100

maxWaitTime()

Define o tempo máximo para aguardar uma conexão disponível.

Padrão: 2 minutes

minSize()

Define o número mínimo de conexões associadas a uma conexão
pool.

Padrão: 0

Observação

Estas configurações do maxSize e minSize se aplicam a cada servidor no cluster ao qual você conecta o driver.

Por exemplo, suponha que você conecte o driver a um cluster com três servidores mongos. Isto significa que pode haver no máximo maxSize conexões e pelo menos minSize conexões para cada servidor mongos.

O exemplo a seguir encadeia o método applyToConnectionPoolSettings() para definir o thread para aguardar no máximo 10 SECONDS por uma conexão disponível e o maxSize do pool de conexões para 200:

MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder().applyConnectionString(
new ConnectionString("<your connection string>"))
.applyToConnectionPoolSettings(builder ->
builder.maxSize(50))
.build());

Para obter mais informações sobre como usar um pool de conexões, consulte a documentação do Pool de conexões no manual do servidor.

Voltar

Limitar o tempo de execução

Nesta página