Le serveur RDS fournit 40 connexions maximum, comme dans la documentation suivante,
j'utilise Magento 1.9 et, à certains moments, j'atteins le nombre maximal de contacts, puis le site Web est hors service.
Avez-vous un moyen recommandé de résoudre ce problème?
De ma compréhension, si j'ai 2 serveurs Web connectés à un serveur RDS, je devrais avoir 2 connexions RDS, pas plus.
amazon-web-services
database
rds
amazon-rds
Alaa Badran
la source
la source
max_connections
paramètre. Pour la plupart des charges de travail, vous devriez être en mesure de l'augmenter en toute sécurité, car il s'agit d'une valeur par défaut conservatrice en toute sécurité ... mais vous souhaiterez rechercher la cause de ces pics.Réponses:
La variable de limite max_connections AWS RDS est basée sur le type d'instance. Vous pouvez donc mettre à niveau votre RDS ou en créer d'autres.
Les types RDS avec limite max_connections:
Mise à jour 2017-07
Le paramètre actuel max_connections RDS MySQL est défini par défaut
{DBInstanceClassMemory/12582880}
. Si vous utilisez t2.micro avec 512 Mo de RAM, max_connections pourrait être (512 * 1024 * 1024) / 12582880 ~ = 40, etc.Chaque serveur Web peut avoir de nombreuses connexions à RDS, ce qui dépend de vos demandes SQL provenant du serveur Web.
la source
{DBInstanceClassMemory/12582880}
conséquent, lorsque vous utilisez t2.micro avec 512 Mo de RAM, le nombre(512*1024*1024)/12582880 = 40.69
maximal de connexions peut expliquer le nombre maximal de connexions que vous possédez .show variables like 'max_connections';
.parameter group
et changer la valeur demax_connections
à la valeur que vous voulez. Ce sera la nouvelle limite de connexion pour votre instance RDS.SHOW VARIABLES WHERE Variable_name='max_connections'
Vous pouvez modifier la
max_connections
valeur en mettant à jour la stratégie de paramètre par défaut ou en en créant une nouvelle. Je suggérerais d'utiliser cette dernière.max_connections
valeurJ'espère que cela t'aides!
la source
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 les implémentations de votre application.
Je ne suis pas un expert de Magento, mais comme je rencontrais récemment un problème similaire sur un projet sur lequel je travaillais, j'ai remarqué que la mise en œuvre par défaut du framework que j'utilisais créait une connexion avec chaque appel à la base de données.
Bien que cela ne pose aucun problème à certains, lorsque vous avez plus de visiteurs ou que certaines tâches nécessitent une base de données importante et peuvent être exécutées sur plusieurs connexions, le meilleur moyen d'éviter que le serveur ne se bloque avec l'erreur "TOO MANY CONNECTIONS" consiste à 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 la mettre en panne pour les utilisateurs. Un pool de connexions garderait une file d'attente pour les demandes d'accès à la base de données jusqu'à ce qu'une connexion devienne disponible afin qu'il puisse poursuivre le traitement de la demande des utilisateurs.
Gardez simplement à l'esprit que le pool de connexions doit être thread-safe dans un scénario multi-thread.
la source
Connectez-vous à votre instance RDS (à l'aide d'un client MySQL) et exécutez la requête suivante:
la source
Informations réelles pour les instances t3 Postgresql (groupe de paramètres default.postgres10):
Son similaire pour default.postgres9 et default.postgres11
la source
Ce ne sont pas 40 connexions maximum, mais 40 instances RDS maximum. 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, une nouvelle connexion est créée. Vous êtes probablement confronté à des contraintes de performances et devriez envisager d'élargir l'instance RDS.
la source