mac下的idea启动spring boot缓慢

By AverageJoeWang
 标签:

我不是太经常写博客,主要是因为我没有太多的话要说,但是我希望这个,如果不是很有意思,至少会是有用的,为自己节省了很多的时间。

梗概

升级到MacOS Sierra后,在不更改一行代码的情况下,我的Java应用程序启动时间(Tomcat / Spring boot)就跑坏了,从15秒到5分钟。我做了一些假设,就像MacOS Sierra引入了一个新的文件系统,并且它登录了我的日志库,或者csrutil锁定了一些出于安全原因的原因,或者让我们读一读人们迄今为止与Sierra有关的所有问题

我正在开发一个Java应用程序,它在某种程度上使用json编码器进行日志记录,同时初始化Spring上下文:在模板中,其中一个日志字段是产生日志行的机器的主机名,需要一个疯狂的时间来解析主机名(是的,现在我看到了实现,我知道它可以被缓存)。

诊断

所以,我想我可以编写一个小的Java类来完成特定的调用,然后测量经过的时间,然后请求几个同学运行相同的代码,并将结果进行比较…一次调用java.net.InetAddress.getLocalHost()方法在我的机器上花费了大约5000毫秒,而我的同学花了大约8毫秒。
如果你遇到类似的问题,请尝试一下github上的方案,看看会发生什么事情:如果时间已经过去了,我可能会对您有好处,正如所料,解决所有我的问题是在StackOverflow:我只需要添加到我的/etc/hosts文件映射到我的Mac主机名的规范127.0.0.1地址(可以通过运行终端中的hostname命令),现在我有,例如:

127.0.0.1    localhost    OliverWangdeMacBook-Pro.local
::1       localhost    OliverWangdeMacBook-Pro.local

这使得经过的时间回到了〜8毫秒(第一次稍微多一点),并解决了我所有的问题。

如果你有相同的问题现在就去尽可能快的修改你的hosts文件。

参考

Freezes after saving caches when debugger connects on macOS Sierra

Spring Boot slow start in OSX