Re: Deadlock when inserting from multiple processes

From: Keith <keith(at)keithf4(dot)com>
To: Dave Johansen <davejohansen(at)gmail(dot)com>
Cc: pgsql-admin <pgsql-admin(at)postgresql(dot)org>
Subject: Re: Deadlock when inserting from multiple processes
Date: 2016-04-27 20:45:26
Message-ID: CAHw75vuRXb7CMU0AV9B0zvYGLB8WfJ7QYogYLosp8M7LsDasiw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

On Wed, Apr 27, 2016 at 3:10 PM, Dave Johansen <davejohansen(at)gmail(dot)com>
wrote:

> I'm using Postgres 9.2.15 on CentOS 7.2 with the method described below to
> support INSERTing from multiple processes:
>
> http://www.postgresql.org/message-id/CAAcYxUf9o3NpiKaHdeShO_iJjm92314eX6ko0JvJidmksutkJg@mail.gmail.com
>
> Last night, one of the processes experienced a dead lock. The error looked
> like this:
> ERROR: deadlock detected
> DETAIL: Process 23527 waits for ShareLock on transaction 1537228819;
> blocked by process 34184
> Process 34184 waits for ShareLock on transaction 1537228441;
> blocked by process 23527.
>
> Is there anything I can do to help diagnose what the cause of this issue
> was?
>
> Thanks,
> Dave
>

Look in the postgresql logs. It should give you more info on what queries
were running in each session that conflicted with each other. If you didn't
have the PID as part of your log_line_prefix, that can make it a bit more
challenging to figure out which sessions were which, though. I've found
this prefix to be very useful (note there is a space at the end):

"%t [%r] [%p]: [%l-1] user=%u,db=%d,e=%e "

9.2 should give you enough info, but I believe more recent versions are
much more verbose with their deadlock output to help with debugging.

In response to

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Sreekanth Palluru 2016-04-27 23:45:18 Testing hot standby on same server sharing same tablespace directory
Previous Message Dave Johansen 2016-04-27 19:10:24 Deadlock when inserting from multiple processes