well, one question : Is tcp-keep-alive enabled by default in postgres-8.1.2 .
I am using postgres on linux platform .
On Tue, Nov 29, 2011 at 8:51 AM, tamanna madaan <tamanna.madaan@xxxxxxxxxxxxxxx> wrote:
Hi Craig
Thanks for your reply . But unfortunately I dont have that process running right now. I have already killed that process . But I have seen this problem sometimes on my setup.
It generally happens when the remote system is going slow for some reason (CPU utilization high etc.) . But whatever is the reason , I would assume that the query should return with some error or so
in case the system, the query is running on , is rebooted . But it doesn't return and remain stuck. Moreover, the same query sometimes hangs even if it is run on local postgres database so I dont think
network issues have any role in that . Please help.
Thanks....
Regards
TamannaOn Tue, Nov 29, 2011 at 7:58 AM, Craig Ringer <ringerc@xxxxxxxxxxxxx> wrote:
On 11/28/2011 05:30 PM, tamanna madaan wrote:
Hi All
I have postgres installed in cluster setup. My system has a script
which executes the below query on remote system in cluster.
psql -t -q -Uslon -h<hostip> -d<dbname> -c"select 1;"
But somehow this query got stuck. It didnt return even after the remote
system( on which this query was supposed to execute) is rebooted . What
could be the reason ??
I relised just after sending my last message:
You should use ps to find out what exactly psql is doing and which system call it's blocked in in the kernel (if it's waiting on a syscall). As you didn't mention your OS I'll assume you're on Linux, where you'd use:
ps -C psql -o wchan:80=
or
ps -p 1234 -o wchan:80=
... where "1234" is the pid of the stuck psql process. In a psql waiting for command line input I see it blocked in the kernel routine "n_tty_read" for example.
If you really want to know what it's doing you can also attach gdb and get a backtrace to see what code it's paused in inside psql:
gdb -q -p 1234 <<__END__
bt
q
__END__
If you get a message about "missing debuginfos", lots of lines reading "no debugging symbols found" or lots of lines ending in "?? ()" then you need to install debug symbols. How to do that depends on your OS/distro so I won't go into that; it's documented on the PostgreSQL wiki under "how to get a stack trace" but you probably won't want to bother if this is just for curiosity's sake.
You're looking for output that looks like:
#1 0x000000369d22a131 in rl_getc () from /lib64/libreadline.so.6
#2 0x000000369d22a8e9 in rl_read_key () from /lib64/libreadline.so.6
#3 0x000000369d215b11 in readline_internal_char () from /lib64/libreadline.so.6
#4 0x000000369d216065 in readline () from /lib64/libreadline.so.6
... etc ...
--
Craig Ringer
--
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
www.globallogic.com
--
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
www.globallogic.com