Perl + Determine active connections on Pg 8.0.x and Pg 8.2.x

Started by Joey K.almost 19 years ago4 messagesgeneral
Jump to latest
#1Joey K.
pguser@gmail.com

Hello,

We have Pg 8.0.x and Pg 8.2.x on 2 separate Linux servers. We have a perl
script (perl 5.8.7, DBI-1.48/DBD::Pg-1.49) that connects to each database to
determine if there are active connections.with the following query.
SELECT count(*) from pg_stat_activity;

The above query always returns 0 rows for Pg 8.0.x and 1 row for Pg 8.2.x.

When we connect to the database using psql client, the above query returns 1
row for both the databases.

Does anyone has an idea what could be the issue? Is there any other way to
determine active connections in the database?

Thanks for all the help!

#2Richard Huxton
dev@archonet.com
In reply to: Joey K. (#1)
Re: Perl + Determine active connections on Pg 8.0.x and Pg 8.2.x

CAJ CAJ wrote:

Hello,

We have Pg 8.0.x and Pg 8.2.x on 2 separate Linux servers. We have a perl
script (perl 5.8.7, DBI-1.48/DBD::Pg-1.49) that connects to each
database to
determine if there are active connections.with the following query.
SELECT count(*) from pg_stat_activity;

The above query always returns 0 rows for Pg 8.0.x and 1 row for Pg 8.2.x.

When we connect to the database using psql client, the above query
returns 1
row for both the databases.

The pg_stat_activity view is never completely up-to-date, there is
always some time lag. This means whether you see your own connection
will depend on the precise order of events. Try sleep()ing for a second
before issuing the query and see if that makes it go away. If so, it's
just timing problems.

I've seen similar with "ps auxw | grep foo" from the command-line.

--
Richard Huxton
Archonet Ltd

#3Joey K.
pguser@gmail.com
In reply to: Richard Huxton (#2)
Re: Perl + Determine active connections on Pg 8.0.x and Pg 8.2.x

We have Pg 8.0.x and Pg 8.2.x on 2 separate Linux servers. We have a

perl

script (perl 5.8.7, DBI-1.48/DBD::Pg-1.49) that connects to each
database to
determine if there are active connections.with the following query.
SELECT count(*) from pg_stat_activity;

The above query always returns 0 rows for Pg 8.0.x and 1 row for Pg

8.2.x.

When we connect to the database using psql client, the above query
returns 1
row for both the databases.

The pg_stat_activity view is never completely up-to-date, there is
always some time lag. This means whether you see your own connection
will depend on the precise order of events. Try sleep()ing for a second
before issuing the query and see if that makes it go away. If so, it's
just timing problems.

I've seen similar with "ps auxw | grep foo" from the command-line.

Thanks! sleep 1; works like a charm on both the databases.

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Richard Huxton (#2)
Re: Perl + Determine active connections on Pg 8.0.x and Pg 8.2.x

Richard Huxton <dev@archonet.com> writes:

CAJ CAJ wrote:

SELECT count(*) from pg_stat_activity;

The above query always returns 0 rows for Pg 8.0.x and 1 row for Pg 8.2.x.

The pg_stat_activity view is never completely up-to-date, there is
always some time lag.

It *is* up-to-date as of 8.2, but in prior releases there can be as much
as half a second time lag.

regards, tom lane