Le partage n'est pas toujours synonyme de bienveillance. Modes de mise en commun de PgBouncer en pratique
- Publié sur Oskar Dudycz
- Sélectionné le
Le plus triste avec la programmation, c'est que lorsqu'on arrive enfin en production, plus on s'en approche, plus les problèmes se compliquent. Certains commencent à se demander si le système sera évolutif , et d'autres effectuent même des tests de performance et de charge. Et là, les résultats mobilisent toutes les équipes.
J'ai déjà vécu ça, et l'une des difficultés récurrentes que j'ai constatées est la gestion des connexions. Tout commence par une forte charge simultanée sur nos services ; notre base de données se retrouve alors à court de connexions. En général, chaque instance de service possède son propre pool de connexions. Chaque pool maintient ses connexions ouvertes afin de pouvoir les réutiliser pour les requêtes suivantes. Mais si la configuration est mal faite, la multiplication des instances de service peut épuiser les connexions de la base de données simplement en les maintenant ouvertes. En temps normal, ce n'est pas un problème, car les connexions inutilisées sont fermées, mais en cas de forte concurrence ? Aïe…