Tous les produits
Search
Centre de documentation

ApsaraDB for MongoDB:Dépannage des problèmes de connexion et de réseau

Dernière mise à jour :Aug 09, 2026

Diagnostiquez et corrigez les échecs de connexion aux instances ApsaraDB for MongoDB. Commencez par la section Erreurs courantes pour des correctifs rapides, ou suivez les Étapes de dépannage pour identifier systématiquement la cause racine.

Étapes de dépannage

Étape 1 : Vérifier la connectivité réseau

Méthode de dépannage

Testez la connectivité à l'instance ApsaraDB for MongoDB à l'aide des commandes suivantes.

  • Exécutez la commande ping <domain>. Par exemple, exécutez ping dds-xxxx.mongodb.rds.aliyuncs.com.

    ping dds-xxx.mongodb.rds.aliyuncs.com
    PING dds-xxx.mongodb.rds.aliyuncs.com (xxx): 56 data bytes
    64 bytes from xxx: icmp_seq=0 ttl=90 time=7.698 ms
    64 bytes from xxx: icmp_seq=1 ttl=90 time=7.085 ms
    64 bytes from xxx: icmp_seq=2 ttl=90 time=11.006 ms
    64 bytes from xxx: icmp_seq=3 ttl=90 time=12.154 ms
    64 bytes from xxx: icmp_seq=4 ttl=90 time=9.149 ms

    Ce résultat confirme que le client peut atteindre l'instance ApsaraDB for MongoDB.

  • Exécutez la commande telnet <domain> <port>. Par exemple, exécutez telnet dds-xxxx.mongodb.rds.aliyuncs.com 3717.

    root@mongotest:~# telnet xxx.mongodb.rds.aliyuncs.com 3717
    Trying xxx...
    Connected to xxx.mongodb.rds.aliyuncs.com.
    Escape character is '^]'.

    Ce résultat confirme la résolution DNS et l'accessibilité du port 3717.

Liste de vérification

Si le test réseau échoue, vérifiez les éléments suivants.

Vérifiez l'état de l'instance. L'instance doit être dans l'état Running.

Vérifiez les paramètres de la liste d'autorisation. L'adresse IP du client doit être ajoutée à la liste d'autorisation de l'instance ApsaraDB for MongoDB.

  • Comment vérifier :

    Ajoutez temporairement 0.0.0.0/0 à la liste d'autorisation de l'instance. Si vous pouvez vous connecter à l'instance après cette modification, les paramètres initiaux de la liste d'autorisation étaient incorrects.

    Important

    L'adresse IP 0.0.0.0/0 permet à n'importe quel appareil d'accéder à l'instance ApsaraDB for MongoDB, ce qui pose un risque de sécurité. Utilisez cette adresse IP uniquement à des fins de test et retirez-la de la liste d'autorisation immédiatement après le test.

  • Solution :

    Ajoutez l'adresse IP correcte du client à la liste d'autorisation. Pour trouver l'adresse IP publique de votre client, consultez la FAQ.

Vérifiez le type de réseau et l'endpoint. Utilisez l'endpoint approprié pour votre type de réseau (privé ou public).

Connectez-vous à la console ApsaraDB for MongoDB et consultez les endpoints sur la page Database Connection.

Étape 2 : Autorisation et authentification

Vérifiez le nom du compte et le mot de passe, et recherchez les caractères spéciaux dans le mot de passe.

  • Vérifiez que le nom du compte et le mot de passe fournis sont corrects.

  • Modifiez le mot de passe. Si vous devez modifier le mot de passe, consultez la rubrique Réinitialisation du mot de passe.

    Si vous modifiez le mot de passe après vous être connecté à l'instance ApsaraDB for MongoDB via Data Management Service (DMS), accédez à la DMS console, cliquez avec le bouton droit sur l'instance cible, puis sélectionnez Edit pour vous reconnecter.

  • Caractères spéciaux. Lorsque vous utilisez MongoDB Shell ou le code d'une application pour vous connecter à une instance ApsaraDB for MongoDB, vous devez échapper tous les caractères spéciaux tels que !@#$%^&*()_+= présents dans le nom du compte ou le mot de passe. Comment résoudre un échec de connexion causé par des caractères spéciaux dans un nom d'utilisateur ou un mot de passe ?.

Vérifiez la base de données d'authentification. Un compte de base de données doit être authentifié auprès de la base de données à laquelle il appartient.

Vérifiez l'endpoint de l'instance. Pour une instance de jeu de réplicas nécessitant des opérations d'écriture, nous vous recommandons de vous connecter en utilisant l'endpoint ConnectionString URI.

  • Symptôme : L'instance devient soudainement inaccessible, bien que l'endpoint n'ait pas été modifié.

  • Cause : Seul le nœud primaire peut effectuer des opérations d'écriture. Si votre application était précédemment connectée via l'endpoint du nœud primaire, un basculement peut changer le nœud connecté en un nœud secondaire, ce qui entraîne l'échec des opérations d'écriture.

  • Solution :

    Implémentez une logique de reconnexion et une gestion des exceptions dans votre application pour récupérer automatiquement après des déconnexions temporaires.

Étape 3 : Autres vérifications

Vérifiez si les performances de l'instance répondent à vos besoins métier.

Vérifiez les outils tiers.

Si un outil tiers tel que Navicat ou Compass ne parvient pas à se connecter à votre instance ApsaraDB for MongoDB, le problème peut provenir de paramètres incorrects de l'instance ou de l'outil. Suivez ces étapes pour résoudre le problème :

  1. Testez la connexion en utilisant MongoDB Shell.

    Nous vous recommandons d'utiliser MongoDB Shell pour vous connecter à l'instance en utilisant son URI ConnectionString haute disponibilité.

  2. Résolvez le problème en fonction du résultat du test.

    • Connexion réussie : L'instance est accessible. Le problème est probablement causé par des paramètres incorrects dans l'outil tiers. Vérifiez la configuration de l'outil.

    • Échec de la connexion : Si MongoDB Shell ne parvient pas à se connecter, les paramètres de l'instance peuvent être incorrects. Suivez les étapes de cette rubrique pour vérifier la connectivité réseau, l'autorisation, l'authentification et les autres paramètres.

Erreurs courantes

Message d'erreur

Cause et solution

network error while attempting to run command 'isMaster' on host 'dds-xxxx.mongodb.rds.aliyuncs.com:3717' :exception: connect failed

  • Timed out after 3000ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. exception=(com.mongodb.MongoSocketReadException: Prematurely reached end of stream)

  • Socket recv() errno:54 Connection reset by peer x.x.x.x:27017

L'instance a peut-être atteint sa limite de connexions.

Solution :

  1. Vérifiez si les connexions sont saturées. Comment interroger le nombre de connexions ?.

  2. Optimisez l'utilisation des connexions. Que faire si le nombre de connexions à mon instance atteint sa limite ?.

MongoDB.Driver.MongoWaitQueueFullException: The wait queue for acquiring a connection to server xxx is full.

La file d'attente du pilote MongoDB est pleine, probablement en raison d'un pool de connexions sous-dimensionné ou d'une concurrence élevée.

Solution :

  1. Vérifiez la configuration du pool de connexions dans l'application. Assurez-vous que le pool est dimensionné de manière appropriée. Comment limiter le nombre de connexions clientes ?.

  2. Si le problème persiste, vérifiez si les connexions à l'instance ApsaraDB for MongoDB sont saturées :

    1. Comment interroger le nombre de connexions ?

    2. Que faire si le nombre de connexions à mon instance atteint sa limite ?

(TooManyLogicalSessions) Unable to add session into the cache because the number of active sessions is too high.

Un nombre excessif de connexions simultanées peut épuiser les sessions disponibles.

Solution :

  1. Dépannez l'échec de connexion causé par l'épuisement des connexions.

    1. Comment interroger le nombre de connexions ?

    2. Que faire si le nombre de connexions à mon instance atteint sa limite ?

  2. Si le nombre de connexions est normal, vérifiez si d'autres métriques de performance de l'instance répondent aux exigences de votre activité.

    1. Utilisez la surveillance des nœuds pour vérifier l'utilisation des ressources, telles que le processeur et la mémoire, afin de déterminer si le type d'instance répond aux exigences de votre activité.

    2. Si le type d'instance est trop petit pour la charge de travail, modifiez la configuration de l'instance pendant les heures creuses.

  • getaddrinfo failed.

  • No suitable servers found (serverSelectionTryOnce set).

Vérifiez que l'endpoint de l'instance est correct :

  • Failed to connect to 10...8:3717 after 5000 milliseconds, giving up.Error: couldn't connect to server 10...8:3717 (10...8), connection attempt failed

  • pymongo.errors.ServerSelectionTimeoutError: dds-xxxx.mongodb.rds.aliyuncs.com:3717: [Errno 113] No route to host,dds-xxxx.mongodb.rds.aliyuncs.com:3717

  • InvalidInstanceId.NotFound: The instance not in current vpc.

Une instance ECS ne parvient pas à se connecter à une instance ApsaraDB for MongoDB via un réseau privé.

Solution :

  1. Vérifiez les paramètres de la liste d'autorisation. Assurez-vous que l'adresse IP privée de l'instance ECS est ajoutée à la liste d'autorisation de l'instance ApsaraDB for MongoDB.

  2. Assurez-vous que l'instance ECS et l'instance ApsaraDB for MongoDB peuvent communiquer entre elles sur le réseau.

    Les instances ECS et ApsaraDB for MongoDB situées dans le même VPC peuvent se connecter directement via le réseau privé. Si elles se trouvent dans des VPC différents, utilisez l'une des méthodes suivantes :

org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message

  • "errmsg": "not master", "code": 10107, "codeName": "NotMaster"

  • "errmsg": "not master", "code": 10107, "codeName": "NotWritablePrimary"

  • Time out after 30000ms while waiting for a server that matches writableServerSelector.

  • Command failed with error 10107 (NotWritablePrimary): 'not primary' on server xxx.

  • Explain's child command cannot run on this node. Are you explaining a write command on a secondary?

  • not master and slaveOk=false.

  • MongoNotPrimaryException: Command failed with error 10107 (NotMaster): 'not master' on server xxx.

  • reason: TopologyDescription { type: 'ReplicaSetNoPrimary',...}

Le nœud sur lequel les données sont écrites n'est pas un nœud primaire.

Cause : Les opérations d'écriture ne peuvent être effectuées que sur le nœud primaire. Si votre application était précédemment connectée via l'endpoint du nœud primaire, un basculement peut modifier le nœud connecté en un nœud secondaire, ce qui entraîne l'échec des opérations d'écriture.

Solution :

  • Pour les environnements de production, nous recommandons que votre application se connecte à la base de données à l'aide d'un URI ConnectionString. De cette manière, en cas de défaillance d'un nœud, les opérations de lecture et d'écriture ne sont pas affectées par le basculement. Pour plus de détails sur les endpoints, consultez les rubriques suivantes :

  • Effectuez manuellement un changement de rôle des nœuds. Promouvez le nœud correspondant à l'endpoint à nœud unique en tant que nœud primaire.

Implémentez une logique de reconnexion et une gestion des exceptions dans votre application pour récupérer automatiquement après des déconnexions temporaires.

[Unauthorized] cloud instance error, disk locked, plz check and upgrade your disk quota,

L'espace disque épuisé a verrouillé l'instance.

Solution : Résolution du verrouillage de l'instance ou des échecs d'écriture causés par l'épuisement de l'espace disque.

(AuthenticationFailed) Authentication failed.

  • !xxx@dds-xxx.mongodb.rds.aliyuncs.com: event not found

Le mot de passe du compte de base de données contient des caractères spéciaux, tels que !@#$%^&*()_+=.

Solution : Comment résoudre un échec de connexion causé par des caractères spéciaux dans un nom d'utilisateur ou un mot de passe ?.

error getting cluster ID: (CommandNotFound) replSetGetConfig is forbidden by cloud provider for security reason

ApsaraDB for MongoDB ne prend pas en charge replSetGetConfig. Limites des commandes dans ApsaraDB for MongoDB.

FAQ

Interrogation des connexions

Le nombre maximal de connexions varie en fonction du type d'instance.

Remarque

La limite de connexions s'applique par nœud. Par exemple, une instance de réplica à trois nœuds dotée de 1 vCPU et de 2 Go de mémoire autorise jusqu'à 500 connexions sur le nœud primaire ainsi que sur chaque nœud secondaire. Le nœud masqué ne traite pas le trafic.

Console

  1. Accédez à la page Instances ApsaraDB for MongoDB Replica Set ou à la page Instances ApsaraDB for MongoDB Sharded Cluster. Dans la barre de navigation supérieure, sélectionnez une région. Cliquez ensuite sur l'ID de l'instance cible.

  2. Dans le volet de navigation de gauche, cliquez sur Monitoring Information.

  3. Sur la page Monitoring Information, consultez les informations relatives aux Connections de l'instance.

    Si l'instance est une instance de cluster fragmenté, vous devez sélectionner le service Mongos utilisé actuellement par votre application dans le coin supérieur droit de la page.

Command

  1. Connectez-vous à l'instance à l'aide de MongoDB Shell.

  2. Consultez le nombre de connexions.

    Exécutez la commande db.serverStatus().connections.

    mgset-123456:PRIMARY> db.serverStatus().connections
    {
            "current" : 1,
            "available" : 999,
            "internal_current" : 10,
            "internal_available" : 990,
            "totalCreated" : 632
    }             

    description des paramètres :

    • « current » : nombre de connexions établies.

    • « available » : nombre de connexions disponibles.

  3. Interrogez les sources de connexion actuelles.

    1. Basculez vers la base de données admin.

      use admin
    2. Exécutez la commande db.runCommand({currentOp: 1, $all: true}).

      mgset-123456:PRIMARY> db.runCommand({currentOp: 1, $all:[{"active" : true}]})                    

    Analysez la sortie pour identifier l'adresse IP source et le nombre de connexions par client. Consultez db.currentOp().

Limitation des connexions clientes

Ajoutez &maxPoolSize=<integer> à l'URI ConnectionString pour limiter la taille du pool. L'exemple suivant définit un pool de 10 connexions (compte : test, base de données d'authentification : admin) :

mongosh "mongodb://test:****@dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****&maxPoolSize=10"
Remarque

Pour limiter la taille du pool avec d'autres langages, consultez la documentation relative aux pilotes MongoDB.

Gestion de la limite de connexions

Vous pouvez redémarrer l'instance, ses composants ou ses nœuds pour libérer temporairement toutes les connexions.

Important

Lorsque vous redémarrez une instance, ses nœuds sont redémarrés séquentiellement. Chaque nœud subit une déconnexion transitoire d'environ 30 secondes. Si l'instance contient un grand nombre de collections (plus de 10 000), la déconnexion peut durer plus longtemps. Avant de redémarrer l'instance, planifiez l'opération en conséquence et assurez-vous que votre application dispose d'un mécanisme de reconnexion.

Après le redémarrage, suivez les étapes ci-dessous pour éviter que le problème ne se reproduise :

Caractères spéciaux dans les identifiants

Les connexions échouent si le nom du compte ou le mot de passe dans la chaîne de connexion contient des caractères spéciaux non échappés tels que !@#$%^&*()_+=.

Échappez les caractères spéciaux dans la chaîne de connexion. Le tableau suivant répertorie les règles d'encodage.

! : %21
@ : %40
# : %23
$ : %24
% : %25
^ : %5e
& : %26
* : %2a
( : %28
) : %29
_ : %5f
+ : %2b
= : %3d

Exemple : si le mot de passe est ab@#c, vous devez échapper les caractères spéciaux dans la chaîne de connexion. Le mot de passe échappé est ab%40%23c.

Spécification d'une base de données d'authentification

Un compte de base de données doit être authentifié auprès de la base de données dans laquelle il a été créé.

Supposons que le nom d'utilisateur et le mot de passe soient tous deux test, et que le compte test appartienne à la base de données testdb.

High-availability endpoint

Dans un URI ConnectionString ou un URI ConnectionString en lecture seule, définissez authSource sur la base de données où le compte a été créé. Si ce paramètre est omis, <database> dans l'URI est utilisé pour l'authentification.

Exemples :

  • Une fois le compte test authentifié auprès de la base de données testdb, l'instance bascule vers la base de données <database>.

mongosh "mongodb://test:test@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?replicaSet=<replicaSet_value>&authSource=testdb"
  • Une fois le compte test authentifié auprès de la base de données testdb, l'instance bascule vers la base de données testdb.

mongosh "mongodb://test:test@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/testdb?replicaSet=<replicaSet_value>"

Single-node endpoint

Vous pouvez exécuter l'une des commandes suivantes pour vous connecter :

mongosh --host $myhost --port $myport -u test -p test --authenticationDatabase testdb

ou

    mongosh --host $myhost --port $myport
    mongo> use testdb
    mongo> db.auth("test", "test")

Détails des paramètres d'endpoint : Connexion à une instance de réplica et Connexion à une instance de cluster fragmenté.

Langages clients pris en charge

ApsaraDB for MongoDB est entièrement compatible avec MongoDB et prend en charge tous les clients MongoDB officiels.

Les langages pris en charge incluent C, C++, C#, Java, Node.js, Python, PHP et Perl (documentation officielle).

Pour obtenir des exemples de code, consultez les rubriques suivantes :

Remarque

Pour garantir une authentification correcte lors de la connexion à une instance ApsaraDB for MongoDB, utilisez un pilote MongoDB version 3.0 ou ultérieure.

Accès sans mot de passe

ApsaraDB for MongoDB ne prend plus en charge l'activation de l'accès sans mot de passe via un VPC.

Si l'accès sans mot de passe est déjà activé, vous pouvez le désactiver définitivement. Désactivation de l'accès sans mot de passe via un réseau privé.

Mongo Shell sous Windows

Scénarios de connexion courants