Thread: Stuck processes, viewing the queries inside

Stuck processes, viewing the queries inside

From
Bryan Field-Elliot
Date:
We have a running server (v7.3) which, over time, seems to accumulate a
bunch of "stuck" PostgreSQL instances which appear to be dead inside of
a transaction. For example, "ps" reveals many of these:


postgres 17683  0.0  0.4  7376 1032 ?        S    Nov13   0:21 postgres:
bryan sourceid 127.0.0.1 idle in transaction

As admin, I'd like to run "psql" and peer inside the system (using the
Statistics Collector) to see which queries have been run inside some of
these stuck transactions. It will help me debug what's going wrong.

This page:

http://www.postgresql.org/docs/7.3/static/monitoring-stats.html

gives lots of intereseting methods for pulling information on the
running state, but I can't see a query for "given a process ID currently
in a transaction, show me all the queries which have been run in it so
far".

Any pointers would be appreciated,

Bryan



Re: Stuck processes, viewing the queries inside

From
Tom Lane
Date:
Bryan Field-Elliot <bryan_lists@netmeme.org> writes:
> We have a running server (v7.3) which, over time, seems to accumulate a
> bunch of "stuck" PostgreSQL instances which appear to be dead inside of
> a transaction. For example, "ps" reveals many of these:

> postgres 17683  0.0  0.4  7376 1032 ?        S    Nov13   0:21 postgres:
> bryan sourceid 127.0.0.1 idle in transaction

"idle in transaction" means the backend is waiting for its connected
client to issue another command.  I don't think it's Postgres that you
need to be investigating ...

> I can't see a query for "given a process ID currently
> in a transaction, show me all the queries which have been run in it so
> far".

There is no such query, but you could try turning on query logging and
then studying the postmaster log.

            regards, tom lane