Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Pools de conexiones

En esta guía, puedes aprender cómo el driver de Kotlin Sync utiliza pools de conexiones para gestionar las conexiones a una implementación de MongoDB. Puedes especificar la configuración del pool de conexiones en tu aplicación para configurar este comportamiento.

Un pool de conexiones es una caché de conexiones abiertas a la base de datos mantenida por el driver Kotlin Sync. Cuando su aplicación solicita una conexión a MongoDB, el controlador recupera una conexión del pool, realiza operaciones y devuelve la conexión al pool para su reutilización.

Las agrupaciones de conexiones ayudan a reducir la latencia de la aplicación y la cantidad de veces que el controlador crea nuevas conexiones.

Cada uno MongoClient instancia tiene una pool de conexiones incorporada para cada servidor en su topología de MongoDB. Si no configura la opción minPoolSize, los pools de conexiones abren sockets on-demand. Estos sockets admiten operaciones concurrentes de MongoDB en tu aplicación.

Cuando se instancia un nuevo MongoClient, el cliente abre dos sockets por servidor en su topología de MongoDB para supervisar el estado del servidor.

Por ejemplo, un cliente conectado a un set de réplicas de tres nodos abre seis sockets de supervisión. Si la aplicación utiliza la configuración predeterminada para maxPoolSize y solo query el nodo principal, puede haber como máximo 106 sockets abiertos y 100 conexiones en el pool de conexiones. Si la aplicación utiliza un preferencia de lectura para query los nodos secundarios, se pueden tener 306 conexiones totales.

Para mayor eficiencia, cree un cliente una vez para cada proceso y reutilícelo en todas las operaciones. Evite crear un nuevo cliente para cada solicitud porque esto aumentará la latencia.

Puedes especificar los ajustes de tu pool de conexiones utilizando una cadena de conexión o un objeto MongoClientSettings.

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

La siguiente tabla describe las opciones de pool de conexiones que se pueden establecer en la cadena de conexión:

Opción
Descripción

maxConnecting

Establece el número máximo de conexiones que un pool puede establecer de manera concurrente.

Por defecto: 2

maxIdleTimeMS

Establece el número máximo de milisegundos que una conexión puede permanecer inactiva en el grupo antes de ser retirada y cerrada. Establecer este valor más alto que el período de inactividad esperado de tu aplicación, pero más bajo que los tiempos de espera de cortafuegos o proxy de conexiones, para evitar desconexiones inesperadas.

Por defecto: 0

maxPoolSize

Establece el número máximo de conexiones que pueden estar abiertas en un pool. Si una operación necesita una nueva conexión mientras el pool de conexiones tiene el número máximo de conexiones abiertas, la operación espera 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, consulte la guía Limitar el tiempo de ejecución del servidor.

Por defecto: 100

minPoolSize

Establece el número mínimo de conexiones que pueden estar abiertas en un pool. El valor de minPoolSize debe ser menor que el valor de maxPoolSize.

Por defecto: 0

maxLifeTimeMS

Establece la cantidad máxima de tiempo, en milisegundos, que el driver puede seguir utilizando una conexión en pool antes de cerrarla. Un valor 0 indica que no hay un límite superior de tiempo para que el controlador mantenga una conexión agrupada abierta.

Por defecto: 0

Para obtener más información sobre estas opciones, consulta el ConnectionString Documentación de la API.

Para especificar la configuración del pool de conexiones en un objeto MongoClientSettings, encadena el método applyToConnectionPoolSettings() al desarrollador MongoClientSettings. Pasa un bloque ConnectionPoolSettings.Builder como parámetro al método applyToConnectionPoolSettings().

La siguiente tabla describe los métodos setter que puedes usar en un bloque ConnectionPoolSettings.Builder para configurar el pool de conexiones:

Método
Descripción

addConnectionPoolListener()

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

applyConnectionString()

Aplica la configuración de un objeto ConnectionString.

applySettings()

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

maintenanceFrequency()

Define la frecuencia para ejecutar tareas de mantenimiento del pool de conexiones.

maintenanceInitialDelay()

Establece el tiempo de espera antes de ejecutar la primera tarea de mantenimiento en el pool de conexiones.

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 permanecer abierta antes de cerrarse.

maxSize()

Establece el número máximo de conexiones que pueden estar abiertas en un pool.

Por defecto: 100

maxWaitTime()

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

por defecto: 2 minutos

minSize()

Establece la cantidad mínima de conexiones que se pueden abrir en un pool.

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 pool de conexiones que tenga un tamaño máximo de 50 conexiones.

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

val uri = "mongodb://<host>:<port>/?maxPoolSize=50"
val client = MongoClient.create(uri)
val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("mongodb://<host>:<port>/"))
.applyToConnectionPoolSettings { builder ->
builder.maxSize(50)
}
.build()
)

Para obtener más información sobre el uso de un pool de conexiones, consulta Descripción general del pool de conexiones en el manual de MongoDB Server.

Volver

Limite el tiempo de ejecución del servidor

En esta página