Thread: Postgre "idle" process using 100% CPU

Postgre "idle" process using 100% CPU

From
Jernej Kos
Date:
Hi,

i am using postgresql version 8.0.1 on Gentoo Linux and from time to time a
postgres process that is marked as idle - "postgres: user db IP(34079) idle"
- starts using 100% CPU. There is nothing in the logs, so i don't have a clue
what could be the problem.

Regards,
Jernej Kos.
--
Jernej Kos <kostko@jweb-network.net>
JWeb-Network

Re: Postgre "idle" process using 100% CPU

From
Tom Lane
Date:
Jernej Kos <kostko@jweb-network.net> writes:
> i am using postgresql version 8.0.1 on Gentoo Linux and from time to time a
> postgres process that is marked as idle - "postgres: user db IP(34079) idle"
> - starts using 100% CPU. There is nothing in the logs, so i don't have a clue
> what could be the problem.

For a long time?  I'd expect it to go busy on receiving a command
somewhat before changing the PS status, because command parsing
happens first (else it can't know what to set the status to ...).
If you are in the habit of sending enormously complex SQL commands
then maybe this state would last long enough to notice.

If you don't think that's it, maybe you could attach to the busy
backend with gdb and get a stack trace to find out what it's doing?

            regards, tom lane

Re: Postgre "idle" process using 100% CPU

From
Jernej Kos
Date:
Well there should be no complex queries executed (there are some huge tables,
but the queries aren't huge or specially complicated). I tried attaching to
the process via gdb and the process is executing method:

HeapTupleSatisfiesSnapshot()

The backtrace appears to be useless (too many ??s). Is that of any help ?

Regards,
Jernej Kos.

On Thursday 09 of June 2005 17:19, you wrote:
> Jernej Kos <kostko@jweb-network.net> writes:
> > i am using postgresql version 8.0.1 on Gentoo Linux and from time to time
> > a postgres process that is marked as idle - "postgres: user db IP(34079)
> > idle" - starts using 100% CPU. There is nothing in the logs, so i don't
> > have a clue what could be the problem.
>
> For a long time?  I'd expect it to go busy on receiving a command
> somewhat before changing the PS status, because command parsing
> happens first (else it can't know what to set the status to ...).
> If you are in the habit of sending enormously complex SQL commands
> then maybe this state would last long enough to notice.
>
> If you don't think that's it, maybe you could attach to the busy
> backend with gdb and get a stack trace to find out what it's doing?
>
>             regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

--
Jernej Kos <kostko@jweb-network.net>
JWeb-Network

Re: Postgre "idle" process using 100% CPU

From
Tom Lane
Date:
Jernej Kos <kostko@jweb-network.net> writes:
> Well there should be no complex queries executed (there are some huge tables,
> but the queries aren't huge or specially complicated). I tried attaching to
> the process via gdb and the process is executing method:

> HeapTupleSatisfiesSnapshot()

> The backtrace appears to be useless (too many ??s). Is that of any help ?

It's really hard to see how it could get to HeapTupleSatisfiesSnapshot()
without being inside a query --- too bad you can't get a more usable
backtrace.  Is it worth recompiling with --enable-debug to investigate
this?

            regards, tom lane

Re: Postgre "idle" process using 100% CPU

From
Jernej Kos
Date:
Well I can't get any better backtraces (even with --enable-debug). The strange
thing is that this just happens once in a while and the process doesn't stop
until it is killed (or postgre is restarted). Any suggestions ?

Regards,
Jernej Kos.

On Sunday 12 of June 2005 18:01, you wrote:
> Jernej Kos <kostko@jweb-network.net> writes:
> > Well there should be no complex queries executed (there are some huge
> > tables, but the queries aren't huge or specially complicated). I tried
> > attaching to the process via gdb and the process is executing method:
> >
> > HeapTupleSatisfiesSnapshot()
> >
> > The backtrace appears to be useless (too many ??s). Is that of any help ?
>
> It's really hard to see how it could get to HeapTupleSatisfiesSnapshot()
> without being inside a query --- too bad you can't get a more usable
> backtrace.  Is it worth recompiling with --enable-debug to investigate
> this?
>
>             regards, tom lane

--
Jernej Kos <kostko@jweb-network.net>
JWeb-Network