Optimisation du 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 établissant une connexion avec celle-ci. Chaque requête consomme des ressources telles que la mémoire, l’allocation de port et le temps CPU. Une transaction peut prendre des millisecondes, mais établir une connexion peut prendre jusqu’à plusieurs secondes.
Pour simplifier le processus de connexion à PostgreSQL, surtout lorsque l’on s’attend à un volume élevé de connexions clients, vous pouvez utiliser PgBouncer pour gérer efficacement les connexions client-base de données. Il s’agit d’un pooler de connexions populaire qui se connecte une fois à la base de données et utilise cette connexion plusieurs fois pour des clients différents. 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 individuels et des mots de passe pour la connexion de sorte que PgBouncer et les clients n’utiliseront pas les mots de passe des utilisateurs de la base de données. De plus, vous pouvez assigner 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 qui utilise déjà des connexions existantes de la base de données.
DataSunrise Database Security Suite, en plus de nombreuses autres fonctionnalités, prend en charge le pooling avec PgBouncer. Travaillant efficacement avec la cartographie clients-base de données, il 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 des ressources du serveur pour le maintien d’un grand nombre de connexions de serveur vers 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 de partager un mot de passe d’utilisateur de base de données avec toutes les applications clientes
Configuration de PgBouncer
Après l’installation, PgBouncer fonctionne comme un service sur Windows et comme un démon sur 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, assigner des noms d’alias pour les bases de données et spécifier un identifiant et un mot de passe pour l’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 démon PgBouncer. Utilisez Listen_addr = * pour écouter toutes les adresses disponibles. |
auth_file | PgBouncer ne fait pas partie de PostgreSQL, vous devez donc fournir la liste des utilisateurs avec des mots de passe chiffrés nécessaires pour se connecter à PgBouncer. Auth_file est un chemin de répertoire vers le fichier contenant les noms d’utilisateurs 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 qui peuvent se connecter au pool (100, par défaut). |
admin_users | Attribution des privilèges avec accès à la console d’administration. |
default_pool_size | Définition du nombre maximum de connexions serveur par combinaison utilisateur/base de données. |
reserve_pool_size | Le nombre maximum de connexions supplémentaires autorisées en cas de problème. |
pool_mode | Définit le mode de pooling : (session) PgBouncer assigne une connexion serveur au client. Lorsque l’application cliente se déconnecte, la connexion est renvoyée dans le pool. (transaction) PgBouncer assigne une connexion serveur à l’application cliente jusqu’à ce que la transaction soit terminée. (statement) PgBouncer assigne une connexion serveur pour chaque instruction de l’application cliente. |
Comme vous pouvez le voir, PgBouncer fournit une solution facile pour gérer les pools de connexions, surtout 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 minutieusement analysé les schémas de mapping de PgBouncer et ont configuré DataSunrise Database Security Suite pour fonctionner pleinement avec ce pooler de connexions.