Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je suis dans le cas suivant:
- deux serveurs postgresql (un maître et un esclave) synchronisé via une réplication hot stand by par wal shipping. - postgresql v9.1 installé via les packages backports Debian Squeeze
- un pgpool a été configuré en front par lequel toutes les lectures passent qui est configuré en failover (le poids du slave est 1000 > à celui du master qui ne sert donc que si le slave n'est plus dispo) et en connection pooler (connection_life_time = 300 afin d'éviter l'overhead de la reconnection) - pgpool 3.0.5 compilé à partir des sources
Reprenons le cas suivant:
- depuis un client j'ouvre une première connexion en passant par pgpool que je laisse ouverte : je vois bien un process au niveau de pgpool et un au niveau de mon serveur slave - OK
- je referme cette connexion : la connexion sur pgpool mais la connexion sur mon serveur slave est toujours présente (cf. connection_life_time) - OK
- depuis le même client sur la même base et avec le même user j'ouvre à nouveau une connexion juste pour faire un "select 1" via pgpool : je vois qu'un nouveau process sur mon serveur slave est créé et donc j'ai 2 connexions - NOK
pourquoi lors de cette dernière connexion, il ne réutilise pas la session idle qui reste ouverte ?
si vous avez des pistes je suis preneur.
merci d'avance !
/Erwan
Hors ligne
Bonjour,
je ne connais pas plus que ça pgPool mais je pense que c'est pour minimiser le nombre de reconnexions. En effet, pg Pool définit un nombre maximum de réutilisations d'une connexion existante, et donc dispatch les premières connexions sur celle existantes.
Julien.
https://rjuju.github.io/
Hors ligne
Bonjour rjuju et merci pour cette réponse.
oui oui c'est effectivement pour minimiser les nombres de reconnexions avec la base que je souhaitais utiliser pgpool mais après plusieurs tests j'ai plus l'impression qu'il ne réutilise jamais une connexion déjà ouverte... et c'est ça qui me perturbe car du coup je minime jamais le nombre de reconnexions
si vous avez d'autres pistes je suis preneur (ou peut être ai je mal saisi la subtilité de certains paramètres)
Hors ligne
Il n'a pas vraiment de raison de réutiliser la même session. Pour faire un test qui ait du sens, il faut lancer un grand nombre de clients, avec beaucoup de sessions. Et vous verrez ainsi le pooler de connexion fonctionner.
Guillaume.
Hors ligne
hum ca signifie que pour utiliser le pool il faut qu'au préalable il ouvre le max de connexions que mon pgpool peut gérer ?
donc j'imagine dans ce cas que parfois il est plus intéressant de baisser le ce nombre afin de profiter un maximum du pool ?
merci en tout cas pour ces précisions !
Hors ligne
Il faut effectivement dépasser ce nombre pour que le pool fonctionne réellement.
Le nombre de connexions parallèles optimal est délicat à trouver. Il dépend de l'architecture de votre serveur, de votre application...
Une base de départ en général est de ((2* nombre de coeurs) + nombre de disques).
Vous pouvez également regarder du coté de pgpoolAdmin qui offre une interface web pour gérer pgPool et afficher facilement de nombreuses informations.
Dernière modification par rjuju (14/06/2012 20:02:05)
Julien.
https://rjuju.github.io/
Hors ligne
Non, il n'est pas nécessaire d'ouvrir le maximum de connexions, mais tout simplement, il faut qu'il ait assez de charge pour que le mécanisme de pooling se mette en route.
Guillaume.
Hors ligne
Pages : 1