Una instancia de ApsaraDB for MongoDB que ha agotado sus conexiones rechazará las nuevas solicitudes de conexión. Este tema explica cómo solucionar los problemas de agotamiento de conexiones.
Síntomas
El número máximo de conexiones permitidas varía según el tipo de instancia. Para obtener más información, consulte Instance types.
Su aplicación no logra conectarse repentinamente a la base de datos.
-
La conexión mediante mongo shell falla con el siguiente error, incluso si la whitelist está configurada correctamente:
2019-07-10T10:30:43.597+0800 E QUERY [js] Error: network error while attempting to run command 'isMaster' on host 'dds-bpxxxxxxxx.mongodb.rds.aliyuncs.com:3717' : connect@src/mongo/shell/mongo.js:328:13 @(connect):1:6 exception: connect failed -
La conexión mediante Data Management Service (DMS) falla con un error, incluso si la whitelist está configurada correctamente:
DMS cannot establish a connection with the MongoDB server. Check the connection address, network connectivity, and whitelist settings, and then try again. Original error: Timed out after 3000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=xxx:60276, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]} For common causes of logon failures, see https://www.alibabacloud.com/help/knowledge_detail/52244.html
Comprobación del agotamiento de conexiones
Vaya a la página de Replica Set Instances o Sharded Cluster Instances. En la parte superior de la página, seleccione un resource group y una región, y haga clic en el ID de la instancia objetivo.
En el panel de navegación izquierdo, haga clic en Monitoring Data.
-
En la página Monitoring Data, consulte la métrica Connection Utilization(%) de la instancia.
NotaSi la instancia es una sharded cluster instance, seleccione el nodo mongos que utiliza su aplicación en la esquina superior derecha de la página.
Para obtener información sobre el número máximo de conexiones para los diferentes tipos de instancia, consulte Instance types.
Soluciones
Para liberar temporalmente todas las conexiones, puede restart an instance, a component, or a node. Para evitar que el problema se repita, ejecute las siguientes acciones después del reinicio:
Reiniciar una instancia desencadena un reinicio continuo de sus nodos. Cada nodo experimenta una desconexión transitoria de aproximadamente 30 segundos. Esta desconexión puede durar más si la instancia contiene muchas colecciones (más de 10,000). Antes de reiniciar, asegúrese de que su aplicación cuenta con un mecanismo de reconexión y puede manejar esta interrupción temporal.
Configure adecuadamente un pool de conexiones. Para obtener más información, consulte Limit the number of connections from clients.
Analyze the source of connections. Si la carga de trabajo está agotando las conexiones, actualice el tipo de instancia. Para obtener más información, consulte Change instance configuration.