Erreur 503 Service Unavailable : saturation du pool de connexions

antoine-virginie 13/05/2026
RÉSOLU
antoine-virginie
Auteur Actif
Avatar de antoine-virginie
antoine-virginie
Auteur Actif

Bonjour, j'ai une application Go qui communique avec une base de données PostgreSQL derrière un PGBouncer. Par moment, j'ai des erreurs 503 Service Unavailable avec un message pooler error: no more connections allowed. Le pool est configuré à 100 max mais les logs montrent que je n'ai jamais plus de 50 requêtes actives. Des idées pour investiguer ce goulot d'étranglement ?

13/05/2026 à 10:58

11 commentaires

eturpin
Membre
Avatar de eturpin
eturpin
Membre

Tu as vérifié si tes connexions ne restent pas en mode idle in transaction ? Ça bloque les slots dans PGBouncer même si la requête est finie.

14/05/2026 à 05:20
antoine-virginie
Auteur Actif
Avatar de antoine-virginie
antoine-virginie
Auteur Actif

Effectivement, j'ai des transactions qui traînent. Je vais auditer le code Go pour voir si je ferme bien les sql.Rows.

15/05/2026 à 04:09
wroche
Membre Actif Secouriste
Avatar de wroche
wroche
Membre Actif Secouriste

Utilise pg_stat_activity sur ta base pour voir l'état réel des sessions. Si tu vois beaucoup de idle, c'est que ton client Go ne libère pas la connexion au pool.

15/05/2026 à 23:38
antoine-virginie
Auteur Actif
Avatar de antoine-virginie
antoine-virginie
Auteur Actif

Je viens de lancer une requête sur pg_stat_activity, j'ai bien des sessions qui restent ouvertes trop longtemps.

16/05/2026 à 17:09
ines29
Membre Actif
Avatar de ines29
ines29
Membre Actif

Attention aussi au mode de PGBouncer. Si tu es en transaction mode, assure-toi de ne pas utiliser de commandes qui nécessitent une session persistante comme SET ou LISTEN.

17/05/2026 à 16:25
antoine-virginie
Auteur Actif
Avatar de antoine-virginie
antoine-virginie
Auteur Actif

Ah, j'utilise SET ROLE dans un middleware. C'est peut-être ça qui force la session à rester collée ?

18/05/2026 à 13:46
eturpin
Membre
Avatar de eturpin
eturpin
Membre

C'est exactement ça. En transaction mode, SET est très dangereux. Essaie d'utiliser RESET ALL à la fin de chaque transaction.

19/05/2026 à 01:47
wroche
Membre Actif Secouriste
Avatar de wroche
wroche
Membre Actif Secouriste

Ou passe en session mode si tu as vraiment besoin de variables d'état, mais ça va limiter ton nombre de connexions simultanées.

19/05/2026 à 18:25
antoine-virginie
Auteur Actif
Avatar de antoine-virginie
antoine-virginie
Auteur Actif

Je vais essayer de refactorer pour supprimer le SET ROLE et passer par des credentials différents si possible.

20/05/2026 à 15:53
ines29
Membre Actif
Avatar de ines29
ines29
Membre Actif

Regarde aussi ton max_client_conn dans pgbouncer.ini. Il est peut-être trop bas par rapport au nombre de pods Go.

21/05/2026 à 09:18
antoine-virginie
Auteur Actif
Avatar de antoine-virginie
antoine-virginie
Auteur Actif

J'ai augmenté max_client_conn et corrigé le SET ROLE. Plus aucune erreur 503 depuis 2 heures. Merci pour le diagnostic !

22/05/2026 à 07:17

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire