我似乎对" sbt test"的性能有问题。升级到macOS Sierra之后。在以前版本的OS X上花了大约40-50秒才完成。 macOS Sierra时代要高得多。我上次跑的时间大约是15分钟。编译时间与El Capitan'上的编译时间大致相同。
我是团队中唯一一个尝试使用这个新macOS的人,所以我无法判断它是否只发生在我的Mac上,还是一个普遍问题。
我的同事在Ubuntu上有类似的问题,它与随机数生成有关,减缓了测试 - Slow service response Times : Java SecureRandom & /dev/random
不幸的是,这对我没有用。最初我在JDK 8u54上试过,然后尝试更新到JDK 8u102,这也没有帮助。
P.S。我正在运行Macbook Pro Mid-2015 2.8GHz i7,16GB RAM,1TB SSD。
答案 0 :(得分:279)
我遇到了同样的问题。升级后Tomcat从15秒到6分钟来初始化Spring语境...禁用csrutils并没有为我解决问题。
通过在映射到/etc/hosts
地址的127.0.0.1
文件中添加我的Mac主机名(即Macbook.local或Mac上的任何内容),解决问题以及::1
就像这样:
127.0.0.1 localhost mbpro.local
::1 localhost mbpro.local
如果您有兴趣,可以在此处找到有关问题和解决方案的一些详细信息: https://thoeni.io/post/macos-sierra-java/
在帖子上,我还链接到github project,以帮助解决问题并验证解决方案。
问题与(我相信)有关localhost名称解析如何工作以及java.net.InetAddr类如何检索地址有关。我与几位同事核实过,显然并没有发生在升级到塞拉利昂的所有人身上,但我仍然在调查这一变化的根源。
无论如何,解决方案与antid0te立即实施和工作的解决方案相同。
答案 1 :(得分:33)
正确答案:Jvm takes a long time to resolve ip-address for localhost
对于懒惰的人:
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
答案 2 :(得分:6)
我有同样的问题。我的春季启动应用需要60秒才能在塞舌斯开始,而优胜美地则需要25秒。
在调试时,我意识到问题来自InetAddress.getLocalHost()。 我更改了我的主机文件,为127.0.0.1和:: 1添加了我的主机名,现在应用程序启动速度和以前一样快。
答案 3 :(得分:2)
启用,例如系统偏好设置>分享>远程登录,会自动为主机名分配IP地址。
当人们在升级后看到问题时,假设10.12改变了主机名的解析方式是有意义的,即至少10.11主机名始终被解析,而10.12只有在启用了服务时才解决系统偏好设置>分享(有10.11的人可以证实这一点)。
答案 4 :(得分:1)
我认为这是新操作系统的一般问题。我有一个类似的问题:我有一个部署到tomcat的Web应用程序。在El Capitan上,它启动时间为10秒,现在需要95秒,而客户端(基于Swing的桌面应用程序)无法连接到它(或者至少需要花费很多时间)。我认为这是网络通信的一部分,因为一个简单的测试控制台应用运行良好。
答案 5 :(得分:1)
将更新安装到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
您可以在终端的任何位置通过命令$hostname
获取 myhostname 。
答案 6 :(得分:0)
被接受的答案帮助了我!只需在此处添加说明我认为对我而言的问题是:
我的主机名类似于“我的Mac”,无法解析。在设置中,它告诉我可以使用mymac.local来寻址计算机
我以为是空间,将我的mac重命名为“ my.mac”,但是即使这样也无济于事,因为自动添加的dns仍然是mymac.local
然后将my.mac添加到/ etc / hosts就可以了。
因此,我猜实际的问题是什么:仅当您的计算机名称包含不是字母的任何内容时,才会发生这种情况。操作系统会自动将其删除,然后主机名和dns条目不匹配。 (可以通过手动添加来解决)
答案 7 :(得分:0)
我在Mac上遇到了同样的问题。
当我将主要和Bonjour主机名更改为仅包含字母数字字符时,它解决了该问题。这个想法来自一位同事,当他遇到类似的问题时(他不记得在哪里),他已经在某处阅读了建议。
从this guide汲取灵感,这些是我遵循的步骤:
首先,更改主要主机名
sudo scutil --set HostName <new host name>
例如:
sudo scutil --set HostName eggsandwich
接下来,更改Bonjour主机名(出于完整性考虑,我从没有尝试过此步骤,所以可能不需要它)。
sudo scutil --set LocalHostName <new host name>
例如:
sudo scutil --set LocalHostName eggsandwich
现在重新启动遇到问题的Java进程,希望它们不再挂起。
另一方面,这也解决了我遇到的另一个问题,即尽管我的偏好设置,终端中的新选项卡都不会在同一目录中启动bash。我没有解释为什么会发生这种情况,但是我很高兴。