Uma instância do ApsaraDB for MongoDB que esgotou suas conexões recusará novas solicitações de conexão. Este tópico explica como solucionar problemas de esgotamento de conexões.
Sintomas
O número máximo de conexões permitidas varia de acordo com o tipo de instância. Para mais informações, consulte Tipos de instância.
A aplicação falha repentinamente ao tentar conectar-se ao banco de dados.
-
A conexão via mongo shell falha com o erro a seguir, mesmo com a lista de permissões configurada corretamente:
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 -
A conexão via Data Management Service (DMS) falha com um erro, mesmo com a lista de permissões configurada corretamente:
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
Verificar esgotamento de conexões
Acesse a página Replica Set Instances ou Sharded Cluster Instances. No topo da página, selecione um grupo de recursos e uma região e clique no ID da instância de destino.
No painel de navegação à esquerda, clique em Monitoring Data.
-
Na página Monitoring Data, visualize a métrica Connection Utilization(%) da instância.
NotaSe a instância for do tipo sharded cluster, selecione o nó mongos utilizado pela sua aplicação no canto superior direito da página.
Para informações sobre o número máximo de conexões para os diferentes tipos de instância, consulte Tipos de instância.
Soluções
Para liberar temporariamente todas as conexões, reinicie uma instância, um componente ou um nó. Para evitar que o problema se repita, execute as seguintes ações após o reinício:
Reiniciar uma instância aciona um reinício gradual de seus nós. Cada nó sofre uma desconexão transitória de aproximadamente 30 segundos, podendo ser mais longa caso a instância contenha muitas coleções (mais de 10.000). Antes de reiniciar, verifique se a aplicação possui um mecanismo de reconexão e consegue lidar com essa interrupção temporária.
Configure um pool de conexões adequadamente. Para mais informações, consulte Limitar o número de conexões de clientes.
Analise a origem das conexões. Se a carga de trabalho estiver esgotando as conexões, faça upgrade do tipo de instância. Para mais informações, consulte Alterar a configuração da instância.