For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/databases/postgresql-pool.md.

Créer et utiliser des pools de connexion dans Public Cloud Databases for PostgreSQL

Voir en Markdown

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


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.

Warning

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.
Ajouter un pool
Info

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 :

Pools

Cliquez sur Informations, puis récupérez les informations requises.

Informations du pool

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 :

$ psql "postgres://avnadmin:xxxxxxxxxxxxxxxxxxxxx@postgresql-b412100d-o2626ab53.database.cloud.ovh.net:20185/pgpool?sslmode=require"

Depuis le terminal 2 :

$ psql "postgres://avnadmin:xxxxxxxxxxxxxxxxxxxxx@postgresql-b412100d-o2626ab53.database.cloud.ovh.net:20185/pgpool?sslmode=require"

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 :

pgpool=> SELECT 1;
?column?
-------
        1
(1 row)

Terminal 2 :

pgpool=> SELECT 1;
?column?
-------
        1
(1 row)

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 :

pgpool=> SELECT COUNT(*) FROM pg_stat_activity WHERE usename = 'avnadmin';
 count
-------
     1
(1 row)

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.

Cette page vous a-t-elle aidé ?