[Pgpool-general] Idle connections not dying, pgpool 3.4.1

Tatsuo Ishii ishii at sraoss.co.jp
Wed Nov 7 03:03:00 UTC 2007


Hi,

It's a little bit difficult to nail down the problem from the
information you provide. Can you please give more details?

- What is the version of pgpool?

- Is it possible to provide the way how to reproduce the problem or a
  self containing test case?

Here are some comments.

> Greetings,
> 
> We've been using pgpool-1 for its connection pooling for a while and  
> have often had some issues with some child processes hanging in idle  
> state and not dying after either of their child_life_time and  
> connection_life_time have expired.  I've usually just killed them  
> manually but today I decided to dig in a little deeper.
> 
> When stracing one of the idle (as in idle is displayed in the ps  
> display and I can track these procs to idle connection in  
> pg_stat_activity) they are sitting on:
> 
> select(10, [8 9], [], [8 9], NULL
> 
> Looking into the code base I seen these select calls come from  
> pool_process_query.c.  I note that before the various selects are run  
> a timeval struct is set up but then not used in any of the select  
> calls.  Is this deliberate?  Is this why these procs are hanging?   

Yes and No.

> What is supposed to generate events on the read/error descriptors so  
> that, in the absence of a timeout val, the code can continue and get  
> back to the life/connection expiration handling in do_child() in  
> child.c?

I guess the select() is waiting for next query from the client. There
are some possibilities that cause the situation:

1) a client bug. for some reason, the client forgets to send next
   query

2) TCP/IP connection between client and pgpool is down. In this case
   it will take up to 2 hours for select() to detect the link down

3) pgpool bug. if neither 1) or 2) is not the case for you, we are
   likely to have an unknown bug with pgpool. To track this we need
   more info.

BTW, pgpool-II 2.0, expected to release on November 16, has a
functionality to force the idle client to be disconnected after
certain idle time. This might be usefull for you if your problem is
caused by 1) or 2).
--
Tatsuo Ishii
SRA OSS, Inc. Japan

> 
> Erik Jones
> 
> Software Developer | Emma®
> erik at myemma.com
> 800.595.4401 or 615.292.5888
> 615.292.0777 (fax)
> 
> Emma helps organizations everywhere communicate & market in style.
> Visit us online at http://www.myemma.com
> 
> 
> _______________________________________________
> Pgpool-general mailing list
> Pgpool-general at pgfoundry.org
> http://pgfoundry.org/mailman/listinfo/pgpool-general


More information about the Pgpool-general mailing list