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.
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:
Référence par max_connections aux tailles d'instance AWS RDS MySQL en 2015
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.
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.
max_connections
valeurJ'espère que cela t'aides!
Informations réelles pour les instances Postgresql t3 (groupe de paramètres default.postgres10):
C'est similaire pour default.postgres9 et default.postgres11
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.
Connectez-vous à votre instance RDS (à l'aide d'un client MySQL) et exécutez la requête suivante:
SHOW VARIABLES LIKE 'max_connections';
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.