[Gllug] DB connection / netstat wierdness

Richard Huxton dev at archonet.com
Tue Feb 3 18:01:59 UTC 2004

On Tuesday 03 February 2004 17:20, Daniel P. Berrange wrote:
> Ok, so the following situation is really confusing the hell out of me.
> I have two application servers and one database server. Typically each app
> server has 150 connections open the database, making 300 in total. Now
> what's strange is that if I don't shutdown the application servers
> cleanly (eg killall -9 java, or C-A-D the box), then database for
> ever things its got TCP connections open from that app server, even
> though the client end of the connection is long since dead. These
> never time out, forcing me to bounce the DB eventually.

At a wild guess, your java environment is using connection pooling and the 
pool is keeping the connections open.

> app01# netstat -t -n -a |grep 5432 | grep | wc -l
>    150

Yep - Postgresql is saying the connections are open, because the app server 
has them open.

> If I look at the second app server which I rebooted with prejudice:
> app02# netstat -t -n -a |grep 5432 | grep | wc -l
>    0

Have you waited long enough for the TCP timeout to kick in here (usually 1 
hour plus IIRC). PG should notice the disconnect after TCP tells it the 
connection is gone.

> The only way I can get them to go away
> is to bounce the DB server process, which kind of sucks because the
> whole point of having two app servers is to allow for one to fail.
> I've had this behaviour with both PostgreSQL and Oracle.

Which points to your application. What is it, and how does it manage its 
If it's closed source and misbehaving, you might end up putting a proxy 
between the DB and app server - then the proxy can kill connections properly 
if one of the app servers dies.

  Richard Huxton
  Archonet Ltd
Gllug mailing list  -  Gllug at gllug.org.uk

More information about the GLLUG mailing list