From: | tamanna madaan <tamanna(dot)madaan(at)globallogic(dot)com> |
---|---|
To: | Tomas Vondra <tv(at)fuzzy(dot)cz> |
Cc: | Craig Ringer <ringerc(at)ringerc(dot)id(dot)au>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: psql query gets stuck indefinitely |
Date: | 2011-12-05 07:15:17 |
Message-ID: | CAD4qJ_KrjyBJFVZazhgyw9wYuHwrjTPnk2yxwiQSCJW9cp=eMg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi Tomas
I tried it on the system having postgres-8.4.0 . And the behavior is same
.
Cluster means a group of machines having postgres installed on all of them .
Same database is created on all the machines one of which working as master
DB
on which operation (like insert/delete/update) will be performed and others
working
as Slave Db which will get data replicated to them from master DB by slony
. In my
cluster setup there are only two machines ( A and B ) one having master Db
and other
being slave . I execute the below query from system A to system B :
psql -U<db name> -h<host ip of B> -c "select sleep(300);"
This query can be seen running on system B in `ps -eaf | grep postgres`
output .
Now, while this query is going on, execute below command on system A which
will block any packet coming to this machine :
iptables -I INPUT -i eth0 -j DROP .
Afer 5 mins (which is the sleep period) , the above query will finish on
system B . But it can still be seen
running on system A . This may be because of the reason that the message
(that the query is finished)
have not been received by system A .
Still I would assume that after (tcp_keepalive_time +
tcp_keepalive_probes*tcp_keepalive_intvl) , the above
psql query should return on system A as well. But, this query doesn't
return until it is killed manually .
What could be the reason of that ??
Well , I learnt below from the release notes of postgres :
==
=========================================================================================
postgres 8.1
server side chnages :
Add configuration parameters to control TCP/IP keep-alive times for idle,
interval, and count (Oliver Jowett)
These values can be changed to allow more rapid detection of lost client
connections.
postgres 9.0
E.8.3.9. Development Tools
E.8.3.9.1. libpq
Add TCP keepalive settings in libpq (Tollef Fog Heen, Fujii Masao, Robert
Haas)
Keepalive settings were already supported on the server end of TCP
connections.
==============================================================================================
Does this mean that TCP keep alive settings(that are provided in postgres
8.1 onwards) would only work for lost connections to server and
won't work in the case above as above case requires psql (which is client )
to be returned ?? And for the above case the TCP keepalive settings in
libpq ( that are provided in postgres 9.0 onwards) would work ??
kernel version on my system is 2.6.27.7-9-default and potstgres-8.4.0.
keepalive setting are as below :
postgresql.conf
#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds;
# 0 selects the system default
#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds;
# 0 selects the system default
#tcp_keepalives_count = 0 # TCP_KEEPCNT;
# 0 selects the system default
system level setiing :
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 75
Regards
Tamanna
On Thu, Dec 1, 2011 at 7:28 PM, Tomas Vondra <tv(at)fuzzy(dot)cz> wrote:
> On 1 Prosinec 2011, 12:57, tamanna madaan wrote:
> > Hi Craig
> > I am able to reproduce the issue now . I have postgres-8.1.2 installed in
> > cluster setup.
>
> Well, the first thing you should do is to upgrade, at least to the last
> 8.1 minor version, which is 8.1.22. It may very well be an already fixed
> bug (haven't checked). BTW the 8.1 branch is not supported for a long
> time, so upgrade to a more recent version if possible.
>
> Second - what OS are you using, what version? The keep-alive needs support
> at OS level, and if the OS is upgraded as frequently as the database (i.e.
> not at all), this might be already fixed.
>
> And finally - what do you mean by 'cluster setup'?
>
> Tomas
>
>
--
Tamanna Madaan | Associate Consultant | GlobalLogic Inc.
Leaders in Software R&D Services
ARGENTINA | CHILE | CHINA | GERMANY | INDIA | ISRAEL | UKRAINE | UK | USA
Office: +0-120-406-2000 x 2971
From | Date | Subject | |
---|---|---|---|
Next Message | Mike Christensen | 2011-12-05 07:31:58 | Re: What's the best way in Postgres9 to store a bunch of arbitrary boolean values for a row? |
Previous Message | Craig Ringer | 2011-12-05 07:12:26 | Re: What's the best way in Postgres9 to store a bunch of arbitrary boolean values for a row? |