Java Jvm需要很长时间才能解析本地主机的ip地址

Java Jvm需要很长时间才能解析本地主机的ip地址,java,scala,jvm,localhost,macos-sierra,Java,Scala,Jvm,Localhost,Macos Sierra,升级到macOS Sierra后,“sbt测试”(包括查找本地主机名/IP地址)的性能似乎有问题。在以前版本的OSX上,完成该操作大约需要40-50秒。macOS Sierra时间远高于此。我最后一次跑步大约15分钟。编译时间与“El Capitan”上的编译时间大致相同 我是我的团队中唯一一个尝试这种新macOS的人,所以我不知道它是只发生在我的mac上,还是一个普遍的问题 我的同事在Ubuntu上也有类似的问题,它与随机数的生成有关,从而减慢了测试的速度 不幸的是,这对我不起作用。最初,我在

升级到macOS Sierra后,“sbt测试”(包括查找本地主机名/IP地址)的性能似乎有问题。在以前版本的OSX上,完成该操作大约需要40-50秒。macOS Sierra时间远高于此。我最后一次跑步大约15分钟。编译时间与“El Capitan”上的编译时间大致相同

我是我的团队中唯一一个尝试这种新macOS的人,所以我不知道它是只发生在我的mac上,还是一个普遍的问题

我的同事在Ubuntu上也有类似的问题,它与随机数的生成有关,从而减慢了测试的速度

不幸的是,这对我不起作用。最初,我在JDK 8u54上尝试了这一点,然后尝试更新到JDK 8u102,但同样没有帮助


另外,我正在运行Macbook Pro 2015年年中的2.8GHz i7、16GB ram、1TB SSD。

我认为这是新操作系统的一个普遍问题。我有一个类似的问题:我有一个部署到tomcat的web应用程序。在El Capitan上,它只需10秒就启动了,现在需要95秒,客户端(基于Swing的桌面应用程序)无法连接到它(或者至少花了很多时间)。我认为这与网络通信有关,因为一个简单的测试控制台应用程序运行良好。

我认为这是新操作系统的一个普遍问题。我有一个类似的问题:我有一个部署到tomcat的web应用程序。在El Capitan上,它只需10秒就启动了,现在需要95秒,客户端(基于Swing的桌面应用程序)无法连接到它(或者至少花了很多时间)。我认为这与网络通信有关,因为一个简单的测试控制台应用程序运行良好。

我也有同样的问题。升级后,Tomcat用了15秒到6分钟来初始化spring上下文。。。禁用Rutils并不能解决我的问题

通过在映射到
127.0.0.1
地址的
/etc/hosts
文件以及
::1
上添加我的Mac主机名(即Macbook.local,或您的Mac被称为什么)解决了这个问题,如下所示:

127.0.0.1   localhost mbpro.local
::1         localhost mbpro.local
如果您感兴趣,可以在此处找到有关问题和解决方案的一些详细信息:

在帖子中,我还链接到一个帮助解决问题和验证解决方案的链接

这个问题(我相信)与localhost名称解析的工作方式以及java.net.InetAddr类如何检索地址有关。我与几位同事进行了验证,显然这并不是每个升级到Sierra的人都会遇到的情况,但我仍在调查这一变化的根源


无论如何,解决方案都是立即实施和运行的。

我也遇到了同样的问题。升级后,Tomcat用了15秒到6分钟来初始化spring上下文。。。禁用Rutils并不能解决我的问题

通过在映射到
127.0.0.1
地址的
/etc/hosts
文件以及
::1
上添加我的Mac主机名(即Macbook.local,或您的Mac被称为什么)解决了这个问题,如下所示:

127.0.0.1   localhost mbpro.local
::1         localhost mbpro.local
如果您感兴趣,可以在此处找到有关问题和解决方案的一些详细信息:

在帖子中,我还链接到一个帮助解决问题和验证解决方案的链接

这个问题(我相信)与localhost名称解析的工作方式以及java.net.InetAddr类如何检索地址有关。我与几位同事进行了验证,显然这并不是每个升级到Sierra的人都会遇到的情况,但我仍在调查这一变化的根源


无论如何,解决方案与立即实施和工作的方案相同。

我也有同样的问题。我的spring boot应用程序在Sierra上启动需要60秒,而在Yosemite上启动需要25秒

调试时,我意识到问题来自InetAddress.getLocalHost()。
我更改了主机文件以添加127.0.0.1和::1的主机名,现在应用程序启动速度与以前一样快。

我也有同样的问题。我的spring boot应用程序在Sierra上启动需要60秒,而在Yosemite上启动需要25秒

调试时,我意识到问题来自InetAddress.getLocalHost()。 我更改了主机文件以添加127.0.0.1和::1的主机名,现在应用程序启动速度与以前一样快。

正确答案:

对于懒惰的人:

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
正确答案:

对于懒惰的人:

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

启用例如系统首选项>共享>远程登录,会自动为主机名分配一个IP地址


由于人们在升级后看到了问题,因此有必要假设10.12更改了主机名的解析方式,即至少在10.11中主机名总是解析的,而在10.12中,只有在系统首选项>共享中启用服务时才会解析(10.11版本的人可以确认这一点).

启用例如系统首选项>共享>远程登录,会自动为主机名分配一个IP地址


由于人们在升级后看到了问题,因此有必要假设10.12更改了主机名的解析方式,即至少在10.11中主机名总是解析的,而在10.12中,只有在系统首选项>共享中启用服务时才会解析(10.11版本的人可以确认这一点).

在将更新安装到Mac Sierra 10.12(16A323)之后,这是一个奇怪的问题。在hosts文件中,使用以下命令对问题进行排序

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

::1 localhost.local在安装Mac Sierra 10.12(16A323)的更新后,出现了一个奇怪的问题。在hosts文件中,使用以下命令对问题进行排序

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

::1 localhost.local被接受的答案帮助了我!在这里加上这句话,说明我认为的问题是:

我的主机名类似于“我的Mac”,无法解析。在设置中,它向我显示可以使用mymac.local对计算机进行寻址

我以为我
sudo scutil --set LocalHostName eggsandwich