Comment augmenter le nombre maximal de connexions de mon instance Amazon RDS for MySQL ?

Date de la dernière mise à jour : 27/08/2021

Je souhaite augmenter le nombre maximal de connexions de mon instance Amazon Relational Database Service (Amazon RDS) for MySQL. Comment puis-je le faire et quelles sont les bonnes pratiques concernant l'utilisation du paramètre max_connections ?

Résolution

Dans Amazon RDS for MySQL, la métrique max_connections permet de surveiller le nombre maximal de connexions clients simultanées (autorisées).

Par défaut, le paramètre max_connections est basé sur la formule suivante dans Amazon RDS for MySQL (calculée à partir de la valeur DBInstanceClassMemory) :

max_connections = DBInstanceClassMemory/12582880

La valeur max_connections par défaut dépend de la classe d'instance utilisée par l'instance Amazon RDS. Une classe d'instance de base de données avec plus de mémoire disponible prend également en charge un plus grand nombre de connexions à la base de données.

Pour vérifier la valeur actuelle du paramètre max_connections, exécutez la commande suivante après vous être connecté à votre instance Amazon RDS for MySQL :

SHOW GLOBAL VARIABLES LIKE 'max_connections';

Lorsque vos connexions clients dépassent la valeur max_connections, vous recevez l'erreur « Trop de connexions ».

Les facteurs suivants peuvent entraîner le dépassement de la valeur max_connections pour vos connexions à la base de données :

  • Augmentation du nombre de connexions clients/applications à l'instance de base de données, causée par une application accrue ou un verrouillage au niveau de la table/ligne.
  • Fermeture incorrecte d'une connexion client/application après la fin d'une opération. Lorsqu'une connexion au serveur n'est pas correctement fermée, l'application client ouvre une nouvelle connexion. Au fil du temps, ces nouvelles connexions au serveur peuvent entraîner le dépassement de la valeur max_connections pour votre instance. Pour répertorier toutes les connexions actives dans votre instance de base de données MySQL, utilisez la commande SHOW FULL PROCESSLIST.
  • Les connexions en veille (également appelées connexions ouvertes inactives) sont causées par des paramètres de délai d'expiration de connexion plus élevés (tels que wait_timeout ou interactive_timeout). Si vous configurez une limite de connexion trop élevée, vous pouvez obtenir une utilisation de mémoire plus élevée même si ces connexions ne sont pas utilisées. Par conséquent, lorsque le serveur d'applications tente d'ouvrir toutes les connexions clients à la base de données, ces connexions peuvent être refusées. Pour mettre fin à une connexion en veille, utilisez l'opération mysql.rds_kill.
    Conseil : il est recommandé de configurer uniquement les connexions actives nécessaires au fonctionnement des applications. Vous pouvez également envisager de mettre à niveau vers une classe d'instance de base de données Amazon RDS plus importante.

Augmentation du paramètre max_connections de votre instance Amazon RDS for MySQL

Vous pouvez augmenter le nombre maximal de connexions à votre instance de base de données en utilisant les méthodes suivantes :

  • Mettez à l'échelle votre instance de base de données jusqu'à une classe d'instance de base de données avec plus de mémoire.
    Avertissement : un temps d'arrêt se produit lorsque vous modifiez une instance de base de données Amazon RDS.
  • Définissez une valeur plus grande pour le paramètre max_connections à l'aide d'un groupe de paramètres personnalisé au niveau de l'instance. L'augmentation du paramètre max_connections n'entraîne aucune panne.
  • Si votre instance de base de données utilise un groupe de paramètres par défaut, remplacez le groupe de paramètres par un groupe de paramètres personnalisé. Veillez à associer le groupe de paramètres de base de données personnalisé à votre instance Amazon RDS for MySQL et de redémarrer l'instance. Une fois que le nouveau groupe de paramètres personnalisé est associé à votre instance de base de données, vous pouvez modifier la valeur du paramètre max_connections.
    Remarque : la modification du groupe de paramètres peut entraîner une panne. Pour plus d'informations, consultez Utilisation des groupes de paramètres de base de données.

Pour créer un groupe de paramètres personnalisé et modifier le paramètre max_connections, consultez Comment modifier les valeurs d'un groupe de paramètres de base de données Amazon RDS ?

Bonnes pratiques pour configurer le paramètre max_connections

Veillez à tenir compte des bonnes pratiques suivantes lorsque vous utilisez le paramètre max_connections pour votre instance de base de données.

  • Les limites de connexion par défaut sont réglées pour les systèmes qui utilisent les valeurs par défaut pour d'autres grands consommateurs de mémoire (notamment le groupe tampon). Il est recommandé d'augmenter la classe d'instance, au lieu de modifier la valeur de la classe d'instance. Toutefois, si vos instances ont beaucoup de mémoire libre, vous pouvez modifier manuellement ce paramètre. Si vous modifiez ces paramètres pour votre instance de base de données, envisagez d'ajuster la limite de connexion pour tenir compte de l'augmentation ou de la diminution de la mémoire disponible sur les instances de base de données.
  • Définissez la valeur max_connections légèrement supérieure au nombre maximal de connexions que vous comptez ouvrir sur chaque instance de base de données.
  • Si vous avez également activé Performance Schema, portez une attention particulière au réglage du paramètre max_connections. Les structures de mémoire de type Performance Schema sont dimensionnées automatiquement en fonction des variables de configuration du serveur. Plus vous définissez une variable élevée, plus la structure Performance Schema utilise de mémoire. Dans les cas extrêmes, cela peut entraîner des problèmes d'insuffisance de la mémoire sur les types d'instances plus petits, par exemple T2 et T3. Si vous utilisez Performance Schema, il est recommandé de conserver la valeur par défaut du paramètre max_connections. Si vous envisagez d'augmenter la valeur max_connections (jusqu'à une valeur nettement supérieure à la valeur par défaut), pensez à désactiver Performance Schema.
    Remarque : si vous activez Performance Insights pour une instance de base de données Amazon RDS for MySQL, Performance Schema est également automatiquement activé.
  • Lorsque vous réglez le paramètre max_connections, vérifiez également les paramètres liés à la connexion MySQL suivants :
    wait_timeout – nombre de secondes pendant lesquelles le serveur attend l'activité sur une connexion TCP/IP ou Unix File non interactive avant de la fermer.
    interactive_timeout – nombre de secondes pendant lesquelles le serveur attend l'activité sur une connexion interactive avant de la fermer.
    net_read_timeout – nombre de secondes d'attente d'une quantité plus importante de données provenant d'une connexion TCP/IP avant l'abandon de la lecture.
    net_write_timeout – nombre de secondes d'attente sur les connexions TCP/IP pour qu'un bloc soit écrit avant l'abandon de l'écriture.
    max_execution_time – délai d'expiration de l'exécution pour les instructions SELECT, en milliseconde.
    max_connect_errors – un hôte est privé d'autres connexions si la quantité de connexions interrompues dépasse ce nombre.
    max_user_connections – nombre maximal de connexions simultanées autorisées sur un compte MySQL donné.

Remarque : cet article n'inclut pas les valeurs recommandées pour les paramètres répertoriés, car ces valeurs varient en fonction de votre cas d'utilisation.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?