Jvm 需要很长时间来解析 localhost 的 ip 地址

新手上路,请多包涵

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

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

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

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

PS 我正在运行 Macbook Pro Mid-2015 2.8GHz i7、16GB 内存、1TB SSD。

原文由 Tomasz Mikuś 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 655
2 个回答

我有同样的问题。 Tomcat 在升级后从 15 秒到 6 分钟来初始化 spring 上下文…禁用 csrutils 并没有解决我的问题。

通过 在映射到 127.0.0.1 地址的 /etc/hosts 文件以及 ::1 像这样:

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

如果您有兴趣,可以在此处找到有关该问题和解决方案的一些详细信息: https ://thoeni.io/post/macos-sierra-java/

在帖子中,我还链接到一个 github 项目 以帮助解决问题和验证解决方案。

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

无论如何,解决方案与 antid0te 实施并立即起作用的解决方案相同。

原文由 thoeni 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 camikiller 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题