Créer et utiliser des pools de connexion dans Public Cloud Databases for PostgreSQL
Créer et utiliser des pools de connexion dans votre Public Cloud Databases for PostgreSQL
Objectif
Public Cloud Databases vous permet de vous concentrer sur la création et le déploiement de vos applications cloud, pendant qu'OVHcloud prend en charge l'infrastructure de base de données et son maintien en conditions opérationnelles.
Ce guide explique comment créer et utiliser des pools de connexion.
Prérequis
- Un projet Public Cloud dans votre compte OVHcloud.
- Une base de données PostgreSQL exécutée sur votre service OVHcloud Public Cloud Databases (ce guide peut vous aider à répondre à ce prérequis)
- Configurer votre instance PostgreSQL pour accepter les connexions entrantes
Accès à l'espace client OVHcloud
- Lien direct :
- Chemin de navigation :
Public Cloud> Sélectionnez votre projet
Concept
Le pooling de connexions vous permet de maintenir un très grand nombre de connexions à une base de données tout en minimisant la consommation des ressources du serveur.
Pourquoi utiliser le pooling de connexions ?
À terme, un nombre élevé de connexions backend devient un problème avec PostgreSQL, car le coût en ressources par connexion est assez élevé en raison de la façon dont PostgreSQL gère les connexions clientes. PostgreSQL crée un processus backend distinct pour chaque connexion, et l'utilisation mémoire inutile générée par ces processus finit par pénaliser le débit global du système. De plus, si chaque connexion est très active, les performances peuvent être affectées par le nombre élevé de tâches exécutées en parallèle.
Il est logique d'avoir suffisamment de connexions pour que chaque cœur CPU du serveur ait quelque chose à faire (chaque connexion ne peut utiliser qu'un seul cœur CPU), mais une centaine de connexions par cœur CPU peut être excessif. Tout cela dépend de la charge de travail, mais un bon nombre de connexions se situe souvent entre 3 et 5 fois le nombre de cœurs CPU.
Modes de pooling de connexions
-
Pooling par session (Session pooling) : une connexion serveur est attribuée à l'application cliente pendant toute la durée de la connexion cliente. PgBouncer libère la connexion serveur et la remet dans le pool une fois que l'application cliente se déconnecte.
-
Pooling par transaction (Transaction pooling) : une connexion serveur est attribuée à l'application cliente pendant la durée d'une transaction. Lorsque PgBouncer détecte la fin de la transaction, il libère la connexion serveur et la remet dans le pool.
Plusieurs fonctionnalités de PostgreSQL, décrites sur la page officielle des fonctionnalités de PgBouncer, sont connues pour être compromises par le pooling par transaction par défaut et ne doivent pas être utilisées par l'application dans ce mode. Vous devez examiner attentivement la conception des applications clientes se connectant à PgBouncer, sous peine de dysfonctionnement de l'application.
- Pooling par instruction (Statement pooling) : une connexion serveur est attribuée à l'application cliente pour chaque instruction. Une fois l'instruction terminée, la connexion serveur est remise dans le pool. Les transactions multi-instructions ne sont pas autorisées dans ce mode.
En pratique
Créer un pool de connexion
Cliquez sur Databases dans le menu de navigation de gauche, sélectionnez votre instance PostgreSQL, puis sélectionnez l'onglet Pools.
Cliquez sur Ajouter un Pool, puis remplissez le formulaire.
Les paramètres disponibles sont :
- Pool name : indiquez ici un nom pour votre pool de connexion. Celui-ci deviendra également le paramètre de connexion "database" ou "dbname" pour vos connexions clientes poolées.
- Database : choisissez la base de données à laquelle vous souhaitez vous connecter. Chaque pool ne peut se connecter qu'à une seule base de données.
- Pool Mode : sélectionnez le mode de pooling.
- Pool Size : sélectionnez le nombre de connexions au serveur PostgreSQL que ce pool peut utiliser simultanément.
- Username : sélectionnez le nom d'utilisateur de la base de données que vous souhaitez utiliser pour vous connecter à la base de données backend.
Vous pouvez modifier, supprimer le pool et accéder à ses informations en cliquant sur ... à droite du pool.
Se connecter à un pool de connexion
Pour établir une connexion, récupérez les informations du pool :
Cliquez sur Informations, puis récupérez les informations requises.
Vérification
Nous pouvons utiliser le client en ligne de commande psql pour vérifier que le pooling fonctionne comme prévu :
Depuis le terminal 1 :
Depuis le terminal 2 :
Nous avons désormais deux connexions clientes ouvertes vers le pool. Vérifions que chaque connexion peut accéder à la base de données :
Terminal 1 :
Terminal 2 :
Les deux connexions répondent comme prévu. Vérifions maintenant combien de connexions existent vers la base de données backend PostgreSQL :
Terminal 1 :
pgstatactivity affiche les deux sessions psql, qui utilisent la même connexion au serveur de base de données PostgreSQL.
Aller plus loin
Visitez notre chaîne Discord dédiée : https://discord.gg/ovhcloud. Posez vos questions, faites-nous part de vos commentaires et interagissez directement avec l’équipe qui développe nos services de bases de données.
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.
Rejoignez notre communauté d'utilisateurs.