web-dev-qa-db-fra.com

Limites de connexion AWS RDS

Le serveur RDS propose 40 connexions maximum, comme dans la documentation suivante
J'utilise Magento 1.9, et à certains moments, j'atteins le nombre maximum alors le site Web est hors service.
Avez-vous une méthode recommandée pour résoudre ce problème?

D'après ma compréhension, si j'ai une connexion de 2 serveurs Web à un serveur RDS .. alors je devrais avoir 2 connexions RDS, pas plus.

54
Alaa Badran

La variable de limite max_connections AWS RDS est basée sur le type d'instance, vous pouvez donc mettre à niveau votre RDS ou créer d'autres répliques.

Les types RDS avec max_connections limit:

  • t2.micro 66
  • t2.small 150
  • m3.medium 296
  • t2.medium 312
  • m3.large 609
  • t2.large 648
  • m4.large 648
  • m3.xlarge 1237
  • r3.large 1258
  • m4.xlarge 1320
  • m2.xlarge 1412
  • m3.2xlarge 2492
  • r3.xlarge 2540

Référence par max_connections aux tailles d'instance AWS RDS MySQL en 2015

Mise à jour 2017-07

Le paramètre RDS MySQL max_connections actuel est défini par défaut par {DBInstanceClassMemory/12582880}, si vous utilisez t2.micro avec 512 Mo de RAM, les max_connections peuvent être (512 * 1024 * 1024)/12582880 ~ = 40, etc. sur.


Chaque serveur Web peut avoir de nombreuses connexions à RDS, ce qui dépend de vos requêtes SQL du serveur Web.

74
Nick Tsai

Vous pouvez modifier le max_connections valeur en mettant à jour la politique de paramètre par défaut ou en créer une nouvelle - je vous suggère d'aller avec cette dernière.

  • Accéder à RDS
  • Groupes de paramètres
  • Créez un nouveau groupe de paramètres (AWS laissera tout par défaut)
  • recherchez le max_connections valeur
  • Modifiez la valeur à utiliser
  • Accédez à l'instance RDS et modifiez
  • Sélectionnez le nouveau groupe de paramètres créé et redémarrez l'instance ou laissez AWS le redémarrer lors de la prochaine fenêtre de maintenance

J'espère que cela t'aides!

35
David

Informations réelles pour les instances Postgresql t3 (groupe de paramètres default.postgres10):

  • db.t3.micro - 112 max_connections
  • db.t3.small - 225 max_connections
  • db.t3.medium - 450 max_connections
  • db.t3.large - 901 max_connections
  • db.t3.xlarge - 1802 max_connections
  • db.t3.2xlarge - 3604 max_connections

C'est similaire pour default.postgres9 et default.postgres11

6
anton.uspehov

Bien que l'augmentation du nombre maximal de connexions sur la configuration du serveur puisse résoudre le problème, vous devez envisager de vérifier les configurations et implémentations de vos applications.

Je ne suis pas un expert de Magento, mais comme j'ai récemment rencontré un problème similaire sur un projet sur lequel je travaillais, j'ai remarqué que l'implémentation par défaut du framework que j'utilisais créait une connexion à chaque appel à la base de données.

Bien que cela ne puisse pas poser de problèmes à certains, au moment où vous avez plus de visiteurs ou certaines tâches qui sont gourmandes en bases de données et peuvent s'exécuter sur plusieurs connexions, le meilleur moyen d'empêcher le serveur de planter avec l'erreur "TROP DE CONNEXIONS TROP" est d'implémenter une base de données pool de connexion.

Cela empêche l'application de créer plus de connexions que le serveur peut gérer et de ne pas bloquer l'application pour les utilisateurs. Un pool de connexions conserverait une file d'attente pour les demandes d'accès à la base de données jusqu'à ce qu'une connexion soit disponible afin de pouvoir poursuivre le traitement de la demande des utilisateurs.

Gardez à l'esprit que le pool de connexions doit être thread-safe dans un scénario multi-thread.

1
Uriel Bertoche

Connectez-vous à votre instance RDS (à l'aide d'un client MySQL) et exécutez la requête suivante:

SHOW VARIABLES LIKE 'max_connections';
1
Shammi Shailaj

Ce n'est pas 40 connexions max, c'est-à-dire 40 instances RDS max. Vous n'utilisez probablement qu'une seule instance en fonction de votre description.

Vous pouvez avoir des milliers de connexions au serveur RDS car chaque fois qu'une session est ouverte avec la base de données, cela crée une nouvelle connexion. Vous rencontrez probablement des contraintes de performances et vous devriez envisager d'agrandir l'instance RDS.

0
jason s