On Fri, Aug 28, 2015 at 10:11 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Steve Kehlet <steve.kehlet@gmail.com> writes: > This is Postgres 9.4.4. I am troubleshooting some occasional (every 3-4 > hours) slowness with UPDATEs on a table that has a GIN index on a JSONB > column. During these episodes, UPDATEs that normally take < 1sec take > upwards of 2-4 minutes, and all finish simultaneously, like they were all > blocked on something and finally got released.
Hm ... have you tried checking pg_locks to see if they're blocked on something identifiable?
Yes, I should have mentioned that, I have a cronjob going every minute dumping out [blocked/blocking queries](https://gist.github.com/skehlet/fbf5f52e18149e14e520) and nothing has shown up related to these queries (there were some other normal unrelated results, so I believe the job+query itself are working). After several incidents I believe it would have logged something.
You might be right that this is caused by flushing the GIN pending list, but I thought that that was not supposed to block concurrent insertions. What I'd expect to see is *one* insert taking significantly longer than normal, but no effect on concurrent operations. Also, 2-4 minutes sounds much longer than should be needed to flush a 10MB pending list, anyway.
Yeah head scratch. That is really weird. Still gathering data, any way I can see for sure when these cleanup cycles are occurring?