Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Que faire si le nombre de connexions à une instance ApsaraDB RDS for MySQL atteint la limite maximale ?

Dernière mise à jour :Aug 08, 2026

Lorsque le nombre de connexions à une instance RDS for MySQL atteint son maximum, tous les clients — y compris Data Management (DMS) et les autres outils — reçoivent un refus d'accès accompagné du message d'erreur ERROR 1040 (HY000): Too many connections. Cette rubrique explique comment diagnostiquer la cause première du problème et le résoudre.

Diagnostiquer le problème

Exécutez les requêtes suivantes pour vérifier l'état actuel de vos connexions :

-- Check the configured maximum connections
SELECT @@max_connections;

-- Check the number of currently connected clients
SHOW STATUS WHERE `variable_name` = 'Threads_connected';

Si la valeur de Threads_connected est égale ou proche de celle de max_connections, le quota de connexions est épuisé.

Pour déterminer si le problème provient de connexions inactives ou actives, accédez à la page Monitoring and Alerts dans la console ApsaraDB RDS et consultez la métrique Session. Examinez la valeur mysql.active_session pour comparer le nombre de sessions actives à celui des sessions inactives.

Résoudre les problèmes causés par un nombre excessif de connexions inactives

MySQL utilise un thread par connexion. Même inactives, les connexions conservent un thread dédié au sein du processus MySQL, ce qui consomme de la mémoire et augmente la surcharge liée aux changements de contexte. Un grand nombre de connexions inactives peut saturer la limite de connexions sans qu'aucune charge de travail active ne soit présente.

Les causes fréquentes d'un nombre excessif de connexions inactives sont les suivantes :

  • Applications utilisant des connexions persistantes sans pool de connexions : par exemple, une application Java qui utilise des connexions persistantes mais n'est pas configurée avec un pool de connexions. Si un nombre initial élevé de connexions est spécifié au démarrage, l'application ouvre immédiatement de nombreuses connexions inactives vers l'instance RDS.

  • Applications utilisant des connexions éphémères qui ne ferment pas les connexions : par exemple, une application PHP qui utilise des connexions éphémères mais ne ferme pas explicitement les connexions après l'exécution des requêtes.

Étape 1 : Terminer immédiatement les sessions inactives

Terminez les sessions inactives en suivant l'une des méthodes ci-dessous :

  • Console ApsaraDB RDS : accédez à la page Session et utilisez la gestion des sessions pour tuer les sessions inactives.

  • DMS : utilisez la fonctionnalité de gestion des sessions dans DMS pour identifier et terminer les sessions inactives.

  • CLI MySQL : exécutez la commande kill <session_id> pour terminer une session spécifique.

Étape 2 : Réduire le délai d'expiration des connexions inactives

L'instance RDS termine automatiquement les connexions inactives après une période de délai d'expiration configurée :

Paramètre Valeur par défaut Description
wait_timeout 86 400 secondes (24 heures) Délai d'expiration pour les connexions en mode non interactif
interactive_timeout 7 200 secondes (2 heures) Délai d'expiration pour les connexions en mode interactif

Les valeurs par défaut sont élevées. Les réduire permet à l'instance de récupérer plus rapidement les connexions inactives. Pour modifier ces paramètres, accédez à la page Parameters dans la console ApsaraDB RDS.

Les modifications apportées aux paramètres wait_timeout et interactive_timeout s'appliquent uniquement aux nouvelles connexions établies après la modification. Les connexions existantes conservent leurs valeurs de délai d'expiration d'origine.

Dans la plupart des cas, les applications se connectent aux instances RDS en mode non interactif. Si vous souhaitez déterminer le mode de connexion utilisé par votre application, vérifiez sa configuration de connexion. Pour les applications PHP, vous pouvez spécifier la constante MYSQL_CLIENT_INTERACTIVE dans la fonction mysql_connect() pour activer le mode interactif.

Étape 3 : Corriger les fuites de connexions dans votre application

Les connexions inactives s'accumulent souvent parce que l'application ne ferme pas explicitement les connexions après avoir exécuté les requêtes. Par exemple, les applications PHP qui utilisent des connexions éphémères omettent parfois l'étape de fermeture, laissant les connexions ouvertes jusqu'à leur expiration.

Vérifiez le code de votre application pour vous assurer que les connexions sont explicitement fermées après chaque requête ou opération.

Résoudre les problèmes causés par un nombre excessif de connexions actives

Un grand nombre de connexions actives indique généralement un goulot d'étranglement au niveau des performances, provoquant une mise en file d'attente des requêtes. Les causes fréquentes sont les suivantes :

  • Une utilisation élevée du CPU

  • Des requêtes lentes

  • Des attentes de verrous InnoDB ou de verrous de métadonnées

  • Une utilisation élevée des IOPS

Identifiez le goulot d'étranglement sous-jacent et traitez-le directement :

Prévenir les problèmes de limite de connexions

Utiliser un pool de connexions (recommandé)

Un pool de connexions gère un ensemble fixe de connexions persistantes partagées par votre application, au lieu d'ouvrir une nouvelle connexion pour chaque requête. Il s'agit de la solution à long terme la plus efficace pour prévenir l'épuisement des connexions, particulièrement pour les applications qui ouvrent et ferment un grand nombre de connexions éphémères, telles que les fonctions serverless ou les applications PHP.

Lors de la configuration de la taille maximale du pool, définissez-la sur une valeur inférieure à la limite de connexions de l'instance. Réservez au moins 10 connexions pour DMS et les autres opérations de gestion.

Par exemple, si votre instance prend en charge 500 connexions, définissez le maximum du pool de connexions à 490.

Activer la détection et la réutilisation des connexions

Activez la détection des connexions dans votre pool de connexions pour supprimer automatiquement les connexions obsolètes. Activez la fonctionnalité de réutilisation afin que le pool réutilise les connexions existantes plutôt que d'en ouvrir inutilement de nouvelles.

Augmenter le type d'instance

Si la demande de connexions dépasse systématiquement la limite actuelle, migrez vers un type d'instance plus puissant qui prend en charge un plus grand nombre de connexions.

Rubriques connexes