gethostbyname_ex(hostname) extremely slow (crossposted from stackoverflow)

Roy Smith roy at panix.com
Sat Aug 31 21:01:00 EDT 2013


In article <b9f77b6f-3a65-407a-aff5-5677be2ba228 at googlegroups.com>,
 anntzer.lee at gmail.com wrote:

> Hi,
> 
> At startup, IPython (qtconsole) calls 
> "socket.gethostbyname_ex(socket.gethostname())[2]" to find a list of IP 
> addresses that point to the machine. On a Linux server that I manage this 
> call is extremely slow (>20s)... which I have trouble understanding as "ip 
> addr show" seems to give the same information nearly instantaneously. Is 
> there anything I can do to make this faster? Can this be a network 
> configuration issue (I am behind a router)?

It's almost certainly some sort of configuration issue which is causing 
some DNS query to timeout.  The first step, is to figure out which part 
is taking so long.  Open up a python shell and run:

>>> name = socket.gethostname()

see how long that takes and what it returns.  Then, assuming it returns 
a string containing your hostname (massive handwave about what that 
actually means), try

>>> socket.gethostbyname_ex(name)

and see how long that takes and what it returns.  At least at that point 
you'll have cut the problem in half.

If I had to guess, you've got a missing PTR record, because that's what 
most people screw up.



More information about the Python-list mailing list