自从我升级到优胜美地以来,我已经注意到尝试解析我的家庭网络上的本地主机已经花费了很多时间(有时超过一分钟),所以我想我会尝试找出原因。
这是我的初始/ etc / hosts文件的外观,它基于我的机器的主机名是teetotal的假设:
$ cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
#fe80::1%lo0 localhost
127.0.0.1 wuqour.local
127.0.0.1 teetotal
我设置了一个测试来重现该问题:
import java.net.InetAddress;
import java.net.UnknownHostException;public class LocalhostResolution
{public static void main( String[] args ) throws UnknownHostException{long start = System.currentTimeMillis();InetAddress localHost = InetAddress.getLocalHost();System.out.println(localHost);System.out.println(System.currentTimeMillis() - start);}
}
具有以下输出:
Exception in thread "main" java.net.UnknownHostException: teetotal-2: teetotal-2: nodename nor servname provided, or not knownat java.net.InetAddress.getLocalHost(InetAddress.java:1473)at LocalhostResolution.main(LocalhostResolution.java:9)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: java.net.UnknownHostException: teetotal-2: nodename nor servname provided, or not knownat java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)at java.net.InetAddress.getLocalHost(InetAddress.java:1469)... 6 more
不知何故,我的主机名已更改为teetotal-2,因此我在/ etc / hosts中添加了以下条目:
127.0.0.1 teetotal-2
现在,如果我们运行程序,则会看到以下输出:
teetotal-2/127.0.0.1
5011
解决该问题仍需要5秒钟,这比我预期的要长得多。 中断代码后,似乎正在尝试执行IPv6解析而不是IPv4解析,因此我也为此添加了/ etc / hosts条目:
::1 teetotal-2
现在解析速度更快:
teetotal-2/127.0.0.1
6
快乐的时光!
翻译自: https://www.javacodegeeks.com/2015/03/inetaddressimpllookupallhostaddr-slowhangs.html