JVM需要很长时间才能parsinglocalhost的IP地址

升级到macOS Sierra后,我似乎遇到了“sbt test”性能问题。 在以前的OS X版本中,大约需要40-50秒才能完成。 macOS塞拉利昂时间比这更高。 我做的最后一次是大约15分钟。 编译时间与“El Capitan”大致相同。

我是我的团队中唯一一个尝试使用这个新的macOS的人,所以我不知道它是否只发生在我的mac上,或者是一个普遍性的问题。

我的同事在Ubuntu上遇到了类似的问题,它与随机数生成相关,减慢了testing速度 – 服务响应速度慢:Java SecureRandom&dev / random

不幸的是,这并不适合我。 最初,我试图在JDK 8u54,然后尝试更新到JDK 8u102,这并没有帮助。

PS我正在运行Macbook Pro中2015年2.8GHz i7,16GB RAM,1TB SSD。

我有同样的问题。 升级后,Tomcat从15秒到6分钟初始化spring context …禁用csrutils并没有为我解决问题。

通过在映射到127.0.0.1地址以及::1/etc/hosts文件中添加我的Mac主机名(例如,Macbook.local,或任何您的Mac被称为)来解决问题,如下所示:

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

如果你有兴趣,你可以在这里find关于这个问题和解决scheme的一些细节: https : //thoeni.io/post/macos-sierra-java/

在post上,我还链接到一个github项目,以帮助解决问题和validation解决scheme。

问题是相关的(我相信)本地主机名称parsing如何工作,以及如何java.net.InetAddr类检索地址。 我和很less的同事核实过,显然每个升级到塞拉利昂的人都不会遇到这种情况,但我仍然在调查这个变化的根源。

无论如何,解决scheme是相同的antid0te立即实施和工作。

正确答案: Jvm需要很长时间才能parsinglocalhost的IP地址

对于懒人们来说:

 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 

我有同样的问题。 我的春季启动应用程序需要60秒在塞拉利昂开始对约塞米蒂25秒。

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

启用例如系统首选项>共享>远程login,将导致主机名被自动分配一个IP地址。

由于人们在升级后看到问题,所以假设10.12改变了主机名的parsing方式是合理的,即至less在10.11时总是parsing主机名,而在10.12时只有在系统偏好设置>分享(10.11的人可以证实这一点)。

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

这可能是因为Mac OS Sierra设置的一些错误。 尝试做所谓的SMC重置或PRAM重置,看看它是否会修复您的Mac。 这些都是软件重置,不会损害您的用户数据。 他们可能会要求您重新启动后重置系统时间。

但他们可以解决你的问题。 您也可以查看一些关于Mac OS Sierra故障排除的提示 – http://elcapitanslow.com/mac-os-sierra-slow-what-to-do/