
Optimiser le Pooling de Connexions avec PgBouncer
La majorité des applications web utilisent des bases de données pour stocker leurs données. Les applications clientes peuvent récupérer les informations de la base de données en y établissant une connexion. Chaque requête consomme des ressources, y compris la mémoire, l’allocation de ports et le temps CPU. Une transaction peut prendre des millisecondes, mais établir une connexion peut prendre jusqu’à plusieurs secondes.
Afin de simplifier le processus de connexion à PostgreSQL, en particulier lorsque l’on prévoit un volume élevé de connexions clients, vous pouvez utiliser PgBouncer pour gérer efficacement les connexions client-base de données. C’est un gestionnaire de pool de connexions populaire qui se connecte une fois à la base de données et utilise cette connexion plusieurs fois pour différents clients. Ce n’est pas le seul avantage de l’utilisation de PgBouncer.
Disons que vous avez 100 clients qui doivent se connecter à votre base de données et que vous ne voulez pas partager le mot de passe de l’utilisateur de la base de données parmi ces clients. Dans ce cas, vous pouvez utiliser PgBouncer. Vous pouvez définir des identifiants et des mots de passe individuels pour se connecter de sorte que PgBouncer et les clients n’utilisent pas les mots de passe de l’utilisateur de la base de données. De plus, vous pouvez attribuer un nom d’alias pour la base de données, de sorte que les clients ne verront pas le vrai nom de la base de données.
Au lieu de créer une connexion à la base de données, une connexion avec PgBouncer est créée en utilisant des connexions à la base de données déjà existantes.
DataSunrise Database Security Suite prend en charge le pooling avec PgBouncer parmi de nombreuses autres fonctionnalités. Travaillant efficacement avec la cartographie clients-bases de données, elle maintient une sécurité complète de la base de données lorsque PgBouncer est en cours d’exécution.
Avantages de l’utilisation des pools de connexions PgBouncer :
- réduction du temps de traitement
- réduction de la consommation de ressources serveur pour maintenir un grand nombre de connexions serveur à une ou plusieurs bases de données
- prise en charge du redémarrage ou de la mise à niveau en ligne sans interruption des connexions clients
- masquage du vrai nom de la base de données
- possibilité d’éviter le partage du mot de passe de l’utilisateur de la base de données avec toutes les applications clientes
Configuration de PgBouncer
Après l’installation, PgBouncer fonctionne comme un service sous Windows et comme un daemon sous Linux (nommé pgbouncer dans les deux cas).
Pour modifier les paramètres de configuration, trouvez le fichier pgbouncer.ini dans le répertoire suivant : pgbouncer/share. Il contient les paramètres suivants :
[database] section | Vous pouvez ajouter des bases de données, définir leurs hôtes, ports, attribuer des noms d’alias pour les bases de données et spécifier un identifiant et un mot de passe pour un utilisateur de la base de données (tous les clients connectés au nom d’alias spécifié via PgBouncer utiliseront l’identifiant et le mot de passe de l’utilisateur de la base de données spécifiés dans cette section). |
[pgbouncer] section | Spécifiez les adresses IP qui seront écoutées par le daemon PgBouncer. Utilisez Listen_addr = * pour écouter toutes les adresses disponibles. |
auth_file | PgBouncer n’est pas une partie de PostgreSQL, vous devez donc fournir la liste des utilisateurs avec des mots de passe cryptés nécessaires pour se connecter à PgBouncer. Auth_file est un chemin d’accès au fichier contenant les noms d’utilisateur et les mots de passe. |
auth_type | (md5 | crypt | plain | trust | any) Md5 est un argument pour utiliser les mots de passe spécifiés dans le auth_file. Md5 est défini par défaut. |
max_client_conn | Le nombre maximum de clients pouvant se connecter au pool (100, par défaut). |
admin_users | Attribution des privilèges avec accès à la console d’administration. |
default_pool_size | Attribution du nombre maximal de connexions serveur par combinaison utilisateur/base de données. |
reserve_pool_size | Le nombre maximal de connexions supplémentaires autorisées en cas de problème. |
pool_mode | Définit le mode de pooling : (session) PgBouncer attribue une connexion serveur au client. Lorsque l’application cliente se déconnecte, la connexion est remise dans le pool. (transaction) PgBouncer attribue une connexion serveur à l’application cliente jusqu’à la fin de la transaction. (statement) PgBouncer attribue une connexion serveur pour chaque instruction de l’application cliente. |
Comme vous pouvez le voir, PgBouncer offre une solution simple pour gérer les pools de connexions, en particulier lorsqu’il s’agit d’une architecture multithread. En utilisant des connexions existantes, PgBouncer élimine la nécessité de créer une connexion à la base de données pour chaque client.
Nos développeurs ont soigneusement analysé les schémas de mapping de PgBouncer et configuré DataSunrise Database Security Suite pour pouvoir fonctionner pleinement avec ce gestionnaire de pool de connexions.