InetAddress.getLocalHost () 실행 속도가 느림 (30 초 이상)
다음 코드로 :
try {
System.out.println(new Date());
InetAddress hostName = InetAddress.getLocalHost();
System.out.println(new Date());
} catch (UnknownHostException e) {
e.printStackTrace();
}
이 출력을 얻습니다.
Thu Oct 22 20:58:22 BST 2015
Thu Oct 22 20:58:52 BST 2015
즉, 실행하는 데 30 초가 걸립니다. Machine은 Java 1.8.0_60이 설치된 2015 Macbook Pro입니다.
왜 이렇게 오래 걸리나요?
이 문제는 / etc / hosts에 다음을 추가하여 해결할 수 있습니다 (호스트 이름이 다음과 같다고 가정) macbook
.
127.0.0.1 macbook
::1 macbook
이렇게하면 시간이 더 적합한 것으로 반환됩니다 (<1 초).
이 문제는 Java8을 사용하는 MacOS Sierra에서 나타납니다. 업데이트는 60 이상 (jdk1.8.0_60.jdk, jdk1.8.0_77.jdk 등)입니다.
솔루션은 여기에서 찾을 수 있습니다 : https://github.com/thoeni/inetTester .
이것은 내 / etc / hosts 파일의 내용입니다.
127.0.0.1 localhost mac.local
::1 localhost mac.local
제 경우에는 mac 이 제 컴퓨터 이름입니다.
여기서 지연은 DNS 확인 시도가 실패했기 때문이라고 생각합니다. DNS 서버가 올바르게 구성되지 않았을 수 있습니다. 30 초는 아마도 DNS 확인의 시간 초과를 나타냅니다.
솔루션이 속도를 향상시킨 이유는 호스트 파일에 항목을 추가하면 호스트 이름을 로컬에서 확인할 수 있으므로 실제 (원격) DNS 서버에 대해 호스트 이름을 확인하려는 시도를 건너 뛰기 때문입니다.
편집 :이 방법이 호스트 확인을 수행하는 이유가 궁금 할 수 있습니다. 분명히 이것은 자바 네트워킹 라이브러리에 내장 된 스푸핑 방지 메커니즘의 일부입니다. 자세한 내용은이 게시물의 승인 된 답변을 참조하십시오. InetAddress.getCanonicalHostName ()은 호스트 이름 대신 IP를 반환합니다.
Java 1.8.0_92 및 1.80_112가 설치된 MacBook Pro에서는이 문제가 여전히 존재하며 InetAddress.getLocalhost () 호출에 5 초 이상이 필요합니다. 수정 된 / etc / hosts가있는 솔루션이 작동하지 않습니다. Java 1.8.0_051로 다시 전환하면이 문제가 해결됩니다.
위의 답변은 내 Mac에서 작동하며 다음과 같이 시도해 볼 수 있습니다.
1 단계, 여기에 링크 설명 입력 에서 inetTester.jar 다운로드
2 단계, Mac에서 실행합니다. 내 Mac의 결과는 다음과 같습니다.
$ java -jar ./inetTester.jar
Calling the hostname resolution method...
Method called, hostname MacBook-Pro.local, elapsed time: 5009 (ms)
테스트를 실행하는 데 5 초가 걸리며 내 Mac의 호스트 이름이 표시됩니다.
3 단계, / etc / hosts를 수정합니다.
127.0.0.1 MacBook-Pro.local
::1 MacBook-Pro.local
호스트는 2 단계에 표시된 것입니다. 그런 다음 테스트를 다시 실행하십시오.
$ java -jar ./inetTester.jar
Calling the hostname resolution method...
Method called, hostname MacBook-Pro.local, elapsed time: 6 (ms)
네, 6ms 만 제공됩니다. 5 초-> 6ms, 좋습니다.
참조 URL : https://stackoverflow.com/questions/33289695/inetaddress-getlocalhost-slow-to-run-30-seconds
'developer tip' 카테고리의 다른 글
echo> & 2 "일부 텍스트"쉘 스크립팅에서 의미하는 바 (0) | 2021.01.10 |
---|---|
오류 : JAVA_HOME이 Maven을 올바르게 실행하도록 정의되지 않았습니다. (0) | 2021.01.10 |
iOS 11에서 Xcode 8 사용 (0) | 2021.01.10 |
제네릭과 함께 Collections.emptySet ()을 사용하면 할당에서 작동하지만 메서드 매개 변수로는 작동하지 않는 이유는 무엇입니까? (0) | 2021.01.10 |
IIS URL 재 작성 및 Web.config (0) | 2021.01.10 |