Este tópico descreve como verificar o uso de conexões e limitar o número máximo de conexões em um pool de conexões de uma instância do ApsaraDB for MongoDB. É possível conectar-se aos bancos de dados do ApsaraDB for MongoDB usando o Data Management (DMS) ou o mongo shell.
Consultar o número atual de conexões
O número máximo de conexões permitidas depende das especificações da sua instância. Para mais informações, consulte Tipos de instância.
O limite máximo de conexões aplica-se individualmente a cada nó. Por exemplo, se você adquirir uma instância de replica set com três nós, 1 vCPU e 2 GiB de memória, o nó primário e cada nó secundário suportarão até 500 conexões cada. O nó oculto não atende conexões externas devido à sua função especial na arquitetura do replica set.
Conecte-se à instância usando o mongo shell. Para mais informações, consulte Conectar-se a uma instância do ApsaraDB for MongoDB. Em seguida, execute o seguinte comando:
db.serverStatus().connections
Exemplo de saída:
mgset-123456:PRIMARY> db.serverStatus().connections
{
"current" : 1,
"available" : 999,
"internal_current" : 10,
"internal_available" : 990,
"totalCreated" : 632
}
Campos de saída
|
Campo |
Descrição |
|
|
Quantidade de conexões de clientes atualmente estabelecidas com este nó. |
|
|
Número de conexões adicionais que este nó ainda pode aceitar. |
|
|
Total acumulado de conexões criadas desde a inicialização do servidor. Um valor que aumenta rapidamente pode indicar que as conexões estão sendo abertas e fechadas com muita frequência, em vez de serem reutilizadas por meio de um pool de conexões. |
A saída também pode incluir os camposinternal_currenteinternal_available, que rastreiam as conexões usadas internamente pelo serviço ApsaraDB for MongoDB.
Consultar os endereços IP de source das conexões atuais
Para identificar quais clientes estão consumindo conexões, consulte as operações ativas:
-
Conecte-se à instância usando o mongo shell. Para mais informações, consulte Conectar-se a uma instância do ApsaraDB for MongoDB. Em seguida, alterne para o banco de dados admin:
use admin -
Execute o comando a seguir para listar as operações ativas:
mgset-123456:PRIMARY> db.runCommand({currentOp: 1, $all:[{"active" : true}]})
A saída inclui o endereço IP de source de cada conexão. Use essas informações para determinar quantas conexões cada cliente estabeleceu com a instância. Para mais detalhes sobre o formato da saída, consulte db.currentOp().
Limitar o número de conexões
Anexe &maxPoolSize=<integer> à URI da string de conexão para defina o número máximo de conexões no pool de conexões.
O exemplo a seguir usa o mongo shell para conectar-se a uma instância com o tamanho máximo do pool definido como 10. A conta do banco de dados é test e o banco de dados é 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"
Dicas para escolher o tamanho do pool:
Defina
maxPoolSizecom base no número de solicitações simultâneas que sua aplicação processa. Um bom ponto de partida é corresponder ao número de threads ou workers assíncronos que executam operações de banco de dados.Evite definir um valor excessivamente alto, especialmente se várias instâncias da aplicação se conectarem ao mesmo nó de banco de dados. O total de conexões de todas as instâncias deve permanecer dentro do limite de conexões por nó.
Caso utilize pooling de conexões no framework da sua aplicação, garanta que o tamanho do pool no nível do driver e no nível do framework estejam coordenados para evitar o esgotamento das conexões.
Para obter detalhes sobre como configurar limites de pool de conexões em linguagens de programação específicas, consulte Comece a desenvolver com MongoDB .