[Python-bugs-list] [ python-Bugs-583975 ] gethostbyaddr lag
noreply@sourceforge.net
noreply@sourceforge.net
Mon, 22 Jul 2002 12:15:01 -0700
Bugs item #583975, was opened at 2002-07-19 14:41
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=583975&group_id=5470
Category: Python Library
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Jason R. Mastaler (jasonrm)
Assigned to: Nobody/Anonymous (nobody)
Summary: gethostbyaddr lag
Initial Comment:
For more info, also see
http://mail.python.org/pipermail/python-list/2002-July/113706.html
Perl's gethostbyaddr doesn't seem to have this problem
as shown
below. Should I report this in the bug tracker?
$ time perl -MSocket -lwe 'print +(gethostbyaddr
inet_aton("datavortex.net"), AF_INET)[0]'
datavortex.net
real 0m0.063s
user 0m0.050s
sys 0m0.010s
$ time python2 -c 'from socket import * ; print
gethostbyaddr("datavortex.net")[0]'
datavortex.net
real 0m20.176s
user 0m0.070s
sys 0m0.020s
----------------------------------------------------------------------
Comment By: Data Vortex (datavortex)
Date: 2002-07-22 15:15
Message:
Logged In: YES
user_id=141979
Running strace python2 -c 'from socket import * ; print
getfqdn()', I can see a pause of several seconds during the
output of:
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sin_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("207.69.188.185")}}, 28) = 0
send(3,
")\351\1\0\0\1\0\0\0\0\0\0\ndatavortex\3net\0\0\34\0\1", 32, 0)
= 32
gettimeofday({1027364850, 154497}, NULL) = 0
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 5000) = 1
recvfrom(3,
")\351\201\200\0\1\0\0\0\1\0\0\ndatavortex\3net\0\0\34\0"...,
1024, 0, {sin_family=AF_INET, sin_p
ort=htons(53), sin_addr=inet_addr("207.69.188.185")}}, [16])
= 95
close(3) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sin_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("207.69.188.185")}}, 28) = 0
send(3, ")\352\1\0\0\1\0\0\0\0\0\0\ndatavortex\3net\3net\0"...,
36, 0) = 36
gettimeofday({1027364850, 169212}, NULL) = 0
poll([{fd=3, events=POLLIN}], 1, 5000) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
connect(4, {sin_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("207.69.188.186")}}, 28) = 0
send(4, ")\352\1\0\0\1\0\0\0\0\0\0\ndatavortex\3net\3net\0"...,
36, 0) = 36
gettimeofday({1027364855, 172955}, NULL) = 0
poll([{fd=4, events=POLLIN}], 1, 5000) = 0
send(3, ")\352\1\0\0\1\0\0\0\0\0\0\ndatavortex\3net\3net\0"...,
36, 0) = 36
gettimeofday({1027364860, 182024}, NULL) = 0
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, 5000) = 1
recvfrom(3,
"<\310\201\202\0\1\0\0\0\0\0\0\ndatavortex\3net\3net\0"...,
1024, 0, {sin_family=AF_INET, sin_por
t=htons(53), sin_addr=inet_addr("207.69.188.185")}}, [16]) =
36
poll([{fd=3, events=POLLIN}], 1, 5000) = 0
send(4, ")\352\1\0\0\1\0\0\0\0\0\0\ndatavortex\3net\3net\0"...,
36, 0) = 36
gettimeofday({1027364865, 191273}, NULL) = 0
The full output of this command is availible here:
http://datavortex.net/out.txt
----------------------------------------------------------------------
Comment By: Neal Norwitz (nnorwitz)
Date: 2002-07-20 17:09
Message:
Logged In: YES
user_id=33168
That's a good idea Jack. On Linux, you can use strace. On
Solaris, I believe the program is called truss.
$ strace python ...
----------------------------------------------------------------------
Comment By: Jack Jansen (jackjansen)
Date: 2002-07-20 17:03
Message:
Logged In: YES
user_id=45365
Here's a few ideas on debugging this:
- Easiest would be if you have a system call tracer. Attach it to the process and see during what system call the 20 second wait occurs. Then look at it's parameters and see whether there's anything fishy. Or whether you can recreate the problem in C.
- If you don't have a tracer first split the program in two steps: the implicit gethostbyname() step and the gethostbyaddr() step. see which one is the problem. Run this step under the debugger and see where the delay is. Again, try to recreate the problem.
----------------------------------------------------------------------
Comment By: Neal Norwitz (nnorwitz)
Date: 2002-07-20 12:02
Message:
Logged In: YES
user_id=33168
Does this happen consistently (every run) or only the first
time?
Works fine for me (Linux). What OS are you on?
----------------------------------------------------------------------
Comment By: Jason R. Mastaler (jasonrm)
Date: 2002-07-19 17:46
Message:
Logged In: YES
user_id=85984
I'm not ruling it out that it could be a local configuration
problem,
it's just that Python is the only application experiencing
this delay.
We've gone through the network configuration and everything
seems
sound, so I'm not sure what more to do.
/etc/resolv.conf is fine -- all entries are operational
nameservers.
----------------------------------------------------------------------
Comment By: Jack Jansen (jackjansen)
Date: 2002-07-19 17:42
Message:
Logged In: YES
user_id=45365
This smells like a local configuration bug on your system, on my system it works fine (0.220u 0.110s 0:01.85 17.8% 0+0k 84+10io 0pf+0w). Look in your /etc/resolv.conf (or similar file for your platform) to see that there aren't any non-existing hosts listed there.
Although, of course, that doesn't explain why perl has no delay...
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=583975&group_id=5470