Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 13/10/2016 12:01:46
- tsn77130
- Membre
Freeze postgres avec requete d'update 500 paramètres dans le IN
Bonjour à tous,
je rencontre un problème de freeze de postgres lors de la mise a jour d'un champ par rapport à une liste de valeurs passée en argument dans le IN de la clause WHERE.
Ce qui est étrange, c'est que le freeze n'intervient qu'a partir de 500 arguments, ce qui me ferait penser a une sorte de buffer overflow
Ex :
update accounts_v1
set active = true
where (account_id, field_id) in ( (6262,5),(6622,22),(2254,7),(2698,70),(2310,4),(6135,22),... )
A 499 entrées dans le IN, l'update passe instantanément, à 500 postgres freeze, et je suis obligé de restart le process.
Ce que j'entend par "freeze", c'est qu'il est possible de se connecter, mais que postgres ne répond plus à aucune requete (meme un "select 1" reste bloqué)
Auriez vous une idée de ce qui se passe ?
Dernière modification par tsn77130 (13/10/2016 12:02:11)
Hors ligne
#2 13/10/2016 13:17:29
- rjuju
- Administrateur
Re : Freeze postgres avec requete d'update 500 paramètres dans le IN
De quelle version de postgres s'agit-il ? Pouvez-vous fournir le nécessaire pour reproduire le problème ?
Julien.
https://rjuju.github.io/
Hors ligne
#3 13/10/2016 15:54:15
- tsn77130
- Membre
Re : Freeze postgres avec requete d'update 500 paramètres dans le IN
C'est la version 9.5.3
J'ai joué cette batterie de tests sur 3 serveurs différents, 2 ont freezé, et sur le 3eme (pourtant beaucoup moins puissant), c'est passé correctement.
Le plus simple serait que je puisse joindre des fichiers pour reproduire le problèmes, mais il n'y a à priori pas cette possibilité.
Comment puis-je vous les fournir ?
Hors ligne
#4 13/10/2016 16:13:24
- gleu
- Administrateur
Re : Freeze postgres avec requete d'update 500 paramètres dans le IN
Les plans d'exécution sont différents ? ce serait intéressant de les voir.
Guillaume.
Hors ligne
#5 13/10/2016 17:54:08
- tsn77130
- Membre
Re : Freeze postgres avec requete d'update 500 paramètres dans le IN
Je viens de trouver d'ou cela vient : le chargement de shared_preload_libraries pour POWA ...
shared_preload_libraries='pg_stat_statements,powa,pg_stat_kcache,pg_qualstats'
C'est l'une des différences que j'avais entre mes 2 serveurs, et une fois désactivées, la requête passait bien ...
Hors ligne
#6 13/10/2016 18:24:07
- rjuju
- Administrateur
Re : Freeze postgres avec requete d'update 500 paramètres dans le IN
Il s'agit d'un bug dans pg_qualstats. Vous pouvez désactiver uniquement cette extension (ou configurer pg_qualstats.enabled = false pour le faire sans redémarrer l'instance si besoin). Je viens d'ajouter quelques commandes pour reproduire le problème : https://github.com/dalibo/pg_qualstats/ … -253563800
On va corriger ça dès que possible.
Julien.
https://rjuju.github.io/
Hors ligne
#7 13/10/2016 19:43:21
- rjuju
- Administrateur
Re : Freeze postgres avec requete d'update 500 paramètres dans le IN
Le bug est corrigé : https://github.com/dalibo/pg_qualstats/ … 439393e095
Une prochaine version de l'extension va bientôt être publiée. Merci pour le rapport de bug.
Julien.
https://rjuju.github.io/
Hors ligne
#8 21/10/2016 11:01:25
- tsn77130
- Membre
Re : Freeze postgres avec requete d'update 500 paramètres dans le IN
Merci pour votre réactivité !
Hors ligne