Este tema describe cómo comprobar el uso de conexiones y limitar el número máximo de conexiones en un pool de conexiones para una instancia de ApsaraDB for MongoDB. Puede conectarse a las bases de datos de ApsaraDB for MongoDB mediante Data Management (DMS) o mongo shell.
Consultar el número actual de conexiones
El número máximo de conexiones permitidas depende de las especificaciones de su instancia. Para obtener más información, consulte Instance types.
El límite máximo de conexiones se aplica a cada nodo de forma individual. Por ejemplo, si adquiere una instancia de conjunto de réplicas de tres nodos con 1 vCPU y 2 GiB de memoria, tanto el nodo primario como cada nodo secundario admiten hasta 500 conexiones. El nodo oculto no atiende conexiones externas debido a su función especial en la arquitectura del conjunto de réplicas.
Conéctese a la instancia mediante mongo shell. Para obtener más información, consulte Connect to an ApsaraDB for MongoDB instance. A continuación, ejecute el siguiente comando:
db.serverStatus().connections
Ejemplo de salida:
mgset-123456:PRIMARY> db.serverStatus().connections
{
"current" : 1,
"available" : 999,
"internal_current" : 10,
"internal_available" : 990,
"totalCreated" : 632
}
Campos de la salida
|
Campo |
Descripción |
|
|
Número de conexiones de clientes establecidas actualmente en este nodo. |
|
|
Número de conexiones adicionales que este nodo aún puede aceptar. |
|
|
Número acumulado de conexiones creadas desde que se inició el servidor. Un valor que aumenta rápidamente puede indicar que las conexiones se abren y cierran con demasiada frecuencia en lugar de reutilizarse mediante un pool de conexiones. |
La salida también puede incluir los camposinternal_currentyinternal_available, que rastrean las conexiones que utiliza internamente el servicio ApsaraDB for MongoDB.
Consultar las direcciones IP de origen de las conexiones actuales
Para identificar qué clientes consumen conexiones, consulte las operaciones activas:
-
Conéctese a la instancia mediante mongo shell. Para obtener más información, consulte Connect to an ApsaraDB for MongoDB instance. A continuación, cambie a la base de datos admin:
use admin -
Ejecute el siguiente comando para listar las operaciones activas:
mgset-123456:PRIMARY> db.runCommand({currentOp: 1, $all:[{"active" : true}]})
La salida incluye la dirección IP de origen de cada conexión. Use esta información para determinar cuántas conexiones ha establecido cada cliente con la instancia. Para obtener más información sobre el formato de la salida, consulte db.currentOp().
Limitar el número de conexiones
Agregue &maxPoolSize=<integer> al URI de su cadena de conexión para establecer el número máximo de conexiones en el pool de conexiones.
El siguiente ejemplo usa mongo shell para conectarse a una instancia con el tamaño máximo del pool establecido en 10. La cuenta de la base de datos es test y la base de datos es admin:
mongo "mongodb://test:****@dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****&maxPoolSize=10"
Recomendaciones para elegir el tamaño del pool:
Establezca
maxPoolSizesegún el número de solicitudes simultáneas que maneja su aplicación. Un buen punto de partida es igualar el número de hilos o workers asíncronos que ejecutan operaciones en la base de datos.Evite establecer un valor demasiado alto, especialmente si varias instancias de la aplicación se conectan al mismo nodo de la base de datos. El total de conexiones de todas las instancias debe mantenerse dentro del límite de conexiones por nodo.
Si usa pooling de conexiones en el framework de su aplicación, asegúrese de coordinar el tamaño del pool a nivel del controlador y del framework para evitar el agotamiento de las conexiones.
Para obtener detalles sobre cómo configurar los límites del pool de conexiones en lenguajes de programación específicos, consulte Start Developing with MongoDB .