Le paramètre max_user_connections définit le nombre maximal de connexions autorisées pour un utilisateur de base de données sur une instance ApsaraDB RDS for MySQL. Lorsqu'une tentative de connexion déclenche l'une des erreurs suivantes, la limite de connexions est atteinte :
has more than 'max_user_connections' active connectionsUser 'xxx' has exceeded the 'max_user_connections' resource
Diagnostiquer le problème
La limite de connexions étant déjà atteinte, l'ouverture de nouvelles sessions peut échouer. Si vous disposez d'une session active dans Data Management Service (DMS), utilisez-la pour exécuter les requêtes suivantes. Sinon, connectez-vous via une instance Elastic Compute Service (ECS). Pour les instructions de connexion, consultez Comment se connecter à une instance ApsaraDB RDS ? ou Utiliser DMS pour se connecter à une instance ApsaraDB RDS for MySQL.
Exécutez ces deux requêtes pour comprendre l'état actuel :
-- Check the current connection limit for this database user
show variables like 'max_user_connections';
-- List all active sessions and their source IP addresses (Host column)
SHOW PROCESSLIST;
La commande SHOW PROCESSLIST répertorie toutes les connexions ouvertes. Pour synthétiser les connexions par client au lieu d'analyser la liste complète, exécutez une requête d'agrégation :
SELECT user, host, count(*) as ct
FROM information_schema.processlist
WHERE user NOT IN ('aliyun_root','aurora','replicator','system user','event_scheduler')
GROUP BY user, host
ORDER BY ct DESC;
Cette requête exclut les comptes système internes et regroupe les sessions restantes par utilisateur et adresse IP source (colonne host), afin que le client détenant le plus grand nombre de connexions apparaisse en premier.
Vous pouvez également utiliser la console ApsaraDB RDS :
Connectez-vous à la console ApsaraDB RDS. Dans la barre de navigation supérieure, sélectionnez la région où se trouve votre instance. Recherchez l'instance et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez Autonomy Services > Diagnostics.
Sur la page Diagnostics, cliquez sur l'onglet Session Management pour afficher toutes les sessions et leurs détails, y compris User, Hostname, Execution Duration (s) et Status.
Pour obtenir une piste d'audit détaillée indiquant quels comptes et quelles adresses IP ont ouvert des connexions, utilisez la fonctionnalité SQL Explorer and Audit (Autonomy Services > SQL Explorer and Audit). Si cette fonctionnalité n'est pas encore activée, activez-la. Pour plus d'informations, consultez Utiliser la fonctionnalité SQL Explorer and Audit.
La fonctionnalité SQL Explorer and Audit fait l'objet d'une facturation distincte. Pour plus de détails sur les tarifs, consultez Règles de facturation .
Résoudre le problème
Choisissez la solution adaptée aux résultats du diagnostic.
Trop de sessions inactives ou de longue durée
Si SHOW PROCESSLIST affiche de nombreuses sessions dans l'état Sleep ou des sessions avec des durées d'exécution anormalement longues, les emplacements de connexion sont occupés par des threads inactifs ou bloqués. Arrêtez les sessions problématiques depuis l'onglet Session Management de la console, ou terminez-les via SQL. Pour des instructions détaillées, consultez Gestion des sessions.
La limite de connexion est trop basse
Si le nombre de sessions actives est légitimement élevé et que la valeur actuelle de max_user_connections est trop restrictive, augmentez la limite :
Vérifiez que votre instance dispose de suffisamment de mémoire pour prendre en charge davantage de connexions. Chaque connexion consomme de la mémoire ; une valeur trop élevée peut entraîner une pression mémoire sur l'instance.
-
Une fois la mémoire suffisante confirmée, mettez à jour la valeur du paramètre. Pour les instructions, consultez Modifier les paramètres qui spécifient le nombre maximal de connexions. Pour afficher la valeur actuelle avant modification :
Dans la console ApsaraDB RDS, accédez à la page des détails de l'instance.
Dans le volet de navigation de gauche, cliquez sur Parameters.
Sur l'onglet Modifiable Parameters, recherchez
max_user_connections.
Le problème persiste après les étapes ci-dessus
Si la limite de connexion reste un problème récurrent :
Examinez les problèmes de connexion plus larges. Consultez Que faire si le nombre de connexions à une instance ApsaraDB RDS for MySQL atteint la limite supérieure ?
À titre de solution de contournement temporaire, redémarrez l'instance pour libérer toutes les connexions existantes. Un redémarrage entraîne une brève interruption. Consultez Redémarrer une instance ApsaraDB RDS.