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

2022-08-31 08:46:16

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

我是团队中唯一一个尝试这个新macOS的人,所以我无法判断它是否只发生在我的Mac上,或者它是一个普遍的问题。

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

不幸的是,这对我来说不起作用。最初我在JDK 8u54上尝试过,然后尝试更新到JDK 8u102,这也无济于事。

附言:我正在运行Macbook Pro Mid-2015 2.8GHz i7,16GB RAM,1TB SSD。


答案 1

我遇到了同样的问题。Tomcat在升级后从15秒到6分钟初始化春季环境...禁用 csrutils 并没有为我解决问题。

我通过在映射到地址的文件上添加我的Mac主机名(即Macbook.local,或Mac被调用的任何内容)以及类似如下内容来解决此问题/etc/hosts127.0.0.1::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实现并立即工作相同。


答案 2

正确答案:Jvm 需要很长时间才能解析本地主机的 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

推荐