[java] Jvm은 localhost의 IP 주소를 확인하는 데 오랜 시간이 걸립니다.

macOS Sierra로 업그레이드 한 후 “sbt 테스트”(로컬 호스트 이름 / IP 주소 조회 포함) 성능에 문제가있는 것 같습니다. 이전 버전의 OS X에서는 완료하는 데 약 40 ~ 50 초가 걸렸습니다. macOS Sierra 시간은 그보다 훨씬 높습니다. 내가 한 마지막 실행은 약 15 분이었습니다. 컴파일 시간은 ‘El Capitan’과 거의 같습니다.

이 새로운 macOS를 사용해 본 팀의 유일한 사람이므로 Mac에서만 발생하는지 아니면 일반적인 문제인지 알 수 없습니다.

제 동료는 우분투에서 비슷한 문제를 가지고 있었고 난수 생성이 테스트 속도를 늦추는 것과 관련이있었습니다- 느린 서비스 응답 시간 : Java SecureRandom & / dev / random

불행히도 그것은 나를 위해 작동하지 않았습니다. 원래 JDK 8u54에서 시도한 다음 JDK 8u102로 업데이트를 시도했지만 도움이되지 않았습니다.

추신 : Macbook Pro Mid-2015 2.8GHz i7, 16GB ram, 1TB SSD를 실행하고 있습니다.



답변

나는 같은 문제가 있었다. Tomcat은 업그레이드 후 스프링 컨텍스트를 초기화하는 데 15 초에서 6 분으로 걸렸습니다. csrutils를 비활성화해도 문제가 해결되지 않았습니다.

내가 해결 온 (Mac이라고 어떤 즉 Macbook.local, 또는) 내 맥 호스트 이름을 추가하여 문제를 /etc/hosts받는 매핑 된 파일 127.0.0.1아니라뿐만 주소 ::1같은 :

127.0.0.1   localhost mbpro.local
::1         localhost mbpro.local

관심이있는 경우 여기에서 문제 및 해결 방법에 대한 세부 정보를 찾을 수 있습니다.
https://thoeni.io/post/macos-sierra-java/

게시물 에서는 문제를 해결하고 솔루션의 유효성을 확인하는 데 도움 이되는 github 프로젝트 에도 연결합니다 .

문제는 localhost 이름 확인이 작동하는 방식과 java.net.InetAddr 클래스가 주소를 검색하는 방식과 관련이 있습니다. 동료를 거의 확인하지 않았으며 Sierra로 업그레이드 한 모든 사람에게 발생하지 않는 것 같지만 여전히이 변경의 원인을 조사하고 있습니다.

어쨌든 해결책은 antid0te가 즉시 구현하고 작동 했던 것과 동일 했습니다.


답변

정답 : Jvm은 localhost의 ip-address를 확인하는 데 오랜 시간이 걸립니다.

게으른 사람들을 위해 :

sudo sed -i bak "s^127\.0\.0\.1.*^127.0.0.1 localhost $(hostname)^g" /etc/hosts
sudo sed -i bak "s^::1.*^::1 localhost $(hostname)^g" /etc/hosts
sudo ifconfig en0 down
sudo ifconfig en0 up


답변

나도 같은 문제가있어. 내 봄 부팅 응용 프로그램은 Sierra에서 시작하는 데 60 초가 걸리고 Yosemite에서는 25 초가 걸립니다.

디버깅하는 동안 문제가 InetAddress.getLocalHost ()에서 비롯된다는 것을 깨달았습니다. 127.0.0.1 및 :: 1에 대한 호스트 이름을 추가하도록 호스트 파일을 변경했으며 이제 응용 프로그램이 이전처럼 빠르게 시작됩니다.


답변

예를 들어 시스템 환경 설정> 공유> 원격 로그인을 활성화하면 호스트 이름에 IP 주소가 자동으로 할당됩니다.

사람들이 업그레이드 후 문제를보고 있으므로 10.12가 호스트 이름 확인 방법을 변경했다고 가정하는 것이 합리적입니다. 즉, 적어도 10.11에서는 호스트 이름이 항상 확인되는 반면 10.12에서는 시스템 기본 설정에서 서비스가 활성화 된 경우에만 해결됩니다. 공유 (10.11 사용자가이를 확인할 수 있음).


답변

새로운 OS의 일반적인 문제라고 생각합니다. 비슷한 문제가 있습니다. tomcat에 배포 된 웹 응용 프로그램이 있습니다. El Capitan에서는 10 초 만에 시작되었지만 이제 95 초가 걸리고 클라이언트 (Swing 기반 데스크톱 앱)가 연결할 수 없습니다 (또는 최소한 많은 시간이 걸렸습니다). 간단한 테스트 콘솔 앱이 잘 실행되기 때문에 네트워크 통신과 관련된 것이라고 생각합니다.


답변

에 업데이트를 설치 한 후 이상한 문제였습니다 Mac Sierra 10.12 (16A323). 아래의 호스트 파일에서 문제를 정렬했습니다.

::1         localhost <myhostname>.local   <--- Was already present
127.0.0.1   localhost <myhostname>.local   <--- Solved the tomcat loading issue

터미널 어디에서나 명령으로 myhostname 을 가져올 수 있습니다 $hostname.


답변

받아 들여진 대답이 도움이되었습니다! 여기에 추가하면 문제가 무엇이라고 생각하는지 설명합니다.

내 호스트 이름은 “내 Mac”과 같은 것으로 확인할 수 없습니다. 설정에서 컴퓨터가 mymac.local로 주소 지정 될 수 있음을 보여주었습니다.

나는 그것이 공간이라고 생각하고 내 mac의 이름을 “my.mac”로 바꿨지 만 자동으로 추가 된 DNS가 여전히 mymac.local이기 때문에 도움이되지 않았습니다.

my.mac을 / etc / hosts에 추가하면 도움이되었습니다.

그래서 제 생각에는 실제 문제가 무엇인지 : 이것은 컴퓨터 이름에 문자가 아닌 것이 포함 된 경우에만 발생합니다. 이것은 os에 의해 자동으로 제거되고 호스트 이름과 dns 항목이 일치하지 않습니다. (수동으로 추가하여 수정할 수 있음)