Re: How to investiage slow insert problem

From: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
To: Rural Hunter <ruralhunter(at)gmail(dot)com>
Cc: "pgsql-performance(at)postgresql(dot)org" <pgsql-performance(at)postgresql(dot)org>
Subject: Re: How to investiage slow insert problem
Date: 2013-08-20 04:34:07
Message-ID: CAMkU=1zWk8dmxCi4uGB4fCmOrb5BvwVB0+Bspu_1gmyO7UUjsg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Monday, August 19, 2013, Rural Hunter wrote:

> Hi,
>
> I'm on 9.2.4 with Ubuntu server. There are usually hundereds of
> connections doing the same insert with different data from different
> networks every minute, through pgbouncer in the same network of the
> database server. The database has been running for about one year without
> problem. Yesterday I got a problem that the connection count limit of the
> database server is reached.

I think that this should generally not happen at the server if you are
using pgbouncer, as you should configure it so that pgbouncer has a lower
limit than postgresql itself does. What pooling method (session,
transaction, statement) are you using?

> I checked the connections and found that there are many inserts hanging
> there. I checked the load(cpu,memory,io) of the db server but seems
> everything is fine.

Can you provide some example numbers for the io load?

> I also checked pg log and I only found there are one "incomplete message
> from client" error message every several minute.

Could you post the complete log message and a few lines of context around
it?

> The I recycled pgbouncer and kept monitoring the connections. I found the
> majority of the inserts finish quickly but every minute there are several
> inserts left and seems hanging there .

How long had they been hanging there? It makes a big difference whether
there are several hanging there at one moment, but a few milliseconds later
there are several different ones, versus the same few that hang around of
many seconds or minutes at a time.

...

From the error message in pg log, I supect it might be the network problem
> from some clients. Could anyone point out if there are other possible
> causes?

If the identities of the "hung" processes are rapidly changing, it could
just be that you are hitting a throughput limit. When you do a lot of
inserts into indexed the tables, the performance can drop precipitously
once the size of the actively updated part of the indexes exceeds
shared_buffers. This would usually show up in the io stats, but if you
always have a lot of io going on, it might not be obvious.

If it is the same few processes hung for long periods, I would strace them,
or gdb them and get a backtrace.

> I'm also wondering what those inserts are doing actually when they are
> hanging there, such as if they are in the trigger or not. Anything I can
> get similar with the connection snapshots in db2?
>

Sorry, I don't know what a connection snapshot in db2 looks like.

Cheers,

Jeff

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Rural Hunter 2013-08-20 05:30:18 Re: How to investiage slow insert problem
Previous Message Sergey Konoplev 2013-08-20 03:01:10 Re: How to investiage slow insert problem