Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Pools de conexiones

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

Un grupo de conexiones es una caché de conexiones abiertas a la base de datos, mantenida por el controlador Java Reactive Streams. Cuando su aplicación solicita una conexión a MongoDB, el controlador Java Reactive Streams obtiene automáticamente una conexión del grupo, realiza las operaciones necesarias y la devuelve al grupo 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 Reactive Streams crea nuevas conexiones.

Cada instancia de MongoClient tiene un grupo de conexiones integrado para cada servidor en la topología de MongoDB. Los pools de conexiones abren sockets on-demand para soportar operaciones concurrentes de MongoDB en su aplicación de subprocesos múltiples.

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

Cada instancia de MongoClient abre dos sockets más por servidor en su topología de MongoDB para la supervisión del estado del servidor.

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

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

Las siguientes son configuraciones de cadenas de conexión que puedes usar para configurar tu pool de conexiones:

Configuración
Descripción

maxConnecting

Número máximo de conexiones que un pool puede establecer de manera simultánea.

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. Establece este valor más alto que el período de inactividad esperado por tu aplicación, pero más bajo que los tiempos de espera por conexión del firewall o del proxy para prevenir 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 esperará a que se abra una nueva conexión. Para limitar este tiempo de espera, hay que usar la configuración de tiempo de espera único. Para obtener más información, consulta la guía Limitar 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.

El tiempo máximo de espera en milisegundos que una operación puede esperar para que una conexión esté disponible. Un valor de 0 implica que no hay límite.

por defecto: 120000 (120 segundos)

maxLifeTimeMS

Especifica el tiempo máximo, en milisegundos, que el controlador de Java Reactive Streams seguirá utilizando una conexión agrupada antes de cerrarla. Un valor de 0 indica que no hay límite superior en cuanto al tiempo que el controlador puede mantener abierta una conexión agrupada.

Por defecto: 0

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

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

La siguiente tabla describe los métodos que puedes encadenar a tu configuración para modificar el comportamiento del driver:

Método
Descripción

addConnectionPoolListener()

Agrega un listener para eventos relacionados con el pool de conexiones.

applyConnectionString()

Usa los parámetros de un objeto ConnectionString.

applySettings()

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

connectionPoolListenerList()

Establece una lista de oyentes del grupo de conexiones.

maintenanceFrequency()

Establece la frecuencia para ejecutar una tarea de mantenimiento.

maintenanceInitialDelay()

Establece el tiempo de espera antes de ejecutar la primera tarea 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 ser cerrada.

maxConnecting()

Establece el número máximo de conexiones que un grupo puede establecer simultáneamente.

maxSize()

Establece el número máximo de conexiones asociadas a un grupo de conexiones.

Por defecto: 100

maxWaitTime()

Establece el tiempo máximo para esperar a una conexión disponible.

Por defecto: 2 minutes

minSize()

Establece el número mínimo de conexiones asociadas a un grupo de conexiones.

Por defecto: 0

Para obtener más información sobre estos métodos, consulte la documentación de la API ConnectionPoolSettings.Builder.

El siguiente ejemplo muestra cómo crear un grupo de conexiones que tiene un tamaño máximo de 50 conexiones.

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

ConnectionString connectionString = new ConnectionString("mongodb://<host>:<port>/?maxPoolSize=50");
try (MongoClient mongoClient = MongoClients.create(connectionString)) {
}
try (MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder().applyConnectionString(
new ConnectionString("<your connection string>"))
.applyToConnectionPoolSettings(builder ->
builder.maxSize(50))
.build())) {

Para más información sobre el uso de un pool de conexiones, consulta la documentación de la pool de conexiones en el manual de servidor.