Docs Menu
Docs Home
/ /

Pools de conexiones

En esta guía, puede aprender cómo el controlador Java usa grupos de conexiones para administrar conexiones a una implementación de MongoDB y cómo puede configurar los ajustes del grupo de conexiones en su aplicación.

Un pool de conexiones es un caché de conexiones de base de datos abiertas, mantenido por el controlador de Java. Cuando su aplicación solicita una conexión a MongoDB, el controlador de Java obtiene una conexión del pool sin problemas, realiza operaciones y la devuelve al pool para su reutilización.

Los grupos de conexiones ayudan a reducir la latencia de la aplicación y la cantidad de veces que el controlador Java crea nuevas conexiones.

Cada MongoClient Cada instancia cuenta con un grupo de conexiones integrado para cada servidor de su topología MongoDB. Los grupos de conexiones abren sockets a demanda para admitir operaciones simultáneas de MongoDB en su aplicación multihilo.

La opción maxPoolSize establece el tamaño máximo de cada grupo de conexiones, cuyo valor predeterminado es 100. Si el número de conexiones en uso a un servidor alcanza maxPoolSize, la siguiente solicitud a ese servidor esperará hasta que haya una conexión disponible.

Cada instancia MongoClient abre dos sockets más por servidor en su topología MongoDB para monitorear el estado del servidor.

Puede especificar configuraciones para su grupo de conexiones utilizando una cadena de conexión o pasando un objeto MongoClientSettings al método MongoClients.create().

Seleccione el Connection String o la pestaña MongoClientSettings para ver la sintaxis correspondiente:

Las siguientes son configuraciones de cadena de conexión que puede utilizar para configurar su grupo de conexiones:

Configuración
Descripción

maxConnecting

Número máximo de conexiones que un grupo puede establecer simultáneamente.

Por defecto: 2

maxIdleTimeMS

El número máximo de milisegundos que una conexión puede permanecer inactiva en el pool antes de ser eliminada y cerrada. Configure este valor por encima del tiempo de inactividad esperado de su aplicación, pero por debajo de los tiempos de espera de conexión del firewall o proxy para evitar desconexiones inesperadas.

Por defecto: 0

maxPoolSize

Número máximo de conexiones abiertas en el pool. Si una operación necesita una nueva conexión mientras el pool de conexiones tiene maxPoolSize conexiones abiertas, la nueva operación espera a que se abra una nueva conexión. Para limitar este tiempo de espera, utilice la configuración de tiempo de espera único. Para obtener más información, consulte Guía paralimitar el tiempo de ejecución del servidor.

Por defecto: 100

minPoolSize

Número mínimo de conexiones abiertas en el pool. El valor de minPoolSize debe ser menor que el valor de maxPoolSize.

Por defecto: 0

waitQueueTimeoutMS (deprecated)

Esta opción está obsoleta. Puede configurar este tiempo de espera estableciendo el tiempo de espera a nivel de cliente.

Tiempo máximo de espera en milisegundos que una operación puede esperar hasta que una conexión esté disponible. Un valor de 0 significa que no hay límite.

Predeterminado: 120000 (120 segundos)

maxLifeTimeMS

Especifica el tiempo máximo, en milisegundos, que el controlador Java continuará usando una conexión agrupada antes de cerrarla. Un valor de 0 indica que no hay límite superior para el tiempo que el controlador puede mantener abierta una conexión agrupada.

Por defecto: 0

El siguiente código crea un cliente con un tamaño máximo de grupo de conexiones de 50.

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

Para obtener más información sobre estos parámetros, consulte la Cadena de conexión Documentación de la API.

Encadene el método applyToConnectionPoolSettings() para modificar la forma en que el controlador administra su grupo de conexiones.

La siguiente tabla describe los métodos que puede encadenar a su configuración para modificar el comportamiento del controlador:

Método
Descripción

addConnectionPoolListener()

Agrega un detector para eventos relacionados con el grupo de conexiones.

applyConnectionString()

Utiliza la configuración de un objeto ConnectionString.

applySettings()

Utiliza la configuración del grupo de conexiones especificada en un objeto ConnectionPoolSettings.

maintenanceFrequency()

Establece la frecuencia para ejecutar un trabajo de mantenimiento.

maintenanceInitialDelay()

Establece el tiempo de espera antes de ejecutar el primer trabajo de mantenimiento.

maxConnectionIdleTime()

Establece el tiempo máximo que una conexión puede estar inactiva antes de que se cierre.

maxConnectionLifeTime()

Establece el tiempo máximo que una conexión agrupada puede estar activa antes de cerrarse.

maxSize()

Establece el número máximo de conexiones asociadas a una conexión
piscina.

Por defecto: 100

maxWaitTime()

Establece el tiempo máximo de espera para una conexión disponible.

Por defecto: 2 minutes

minSize()

Establece el número mínimo de conexiones asociadas a una conexión
piscina.

Por defecto: 0

Nota

Estas configuraciones maxSize y minSize se aplican a cada servidor del clúster al que conecta el controlador.

Por ejemplo, supongamos que conecta el controlador a un clúster con tres servidores mongos. Esto significa que puede haber como máximo maxSize conexiones y al menos minSize conexiones a cada servidor mongos.

El siguiente ejemplo encadena el método applyToConnectionPoolSettings() para configurar el hilo para que espere como máximo 10 SECONDS por una conexión disponible y el maxSize del grupo de conexiones a 200:

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

Para obtener más información sobre el uso de un grupo de conexiones, consulte la documentación del grupo de conexiones en el manual del servidor.

Volver

Limitar el tiempo de ejecución

En esta página