SpringBoot项目启动慢,怎么办?

问题起因

  因为本身我使用的是Pandora Boot,所以一开始项目启动慢我想的是往Pandora上找问题,后来就连Spring Boot项目也启动慢,我就意识到不仅仅是Pandora的问题。

问题分析

  电脑硬件配置问题应该不大,Mac(16G内存),所以没往这方面考虑。那就是系统配置的问题了。网上有JRE设置导致Tomcat容器启动变慢的情况存在 Tomcat启动慢。
 这个方法试过后并不起效果,我开始观察启动日志的打印情况,dao层使用的是Mybatis-Plus,所以我看注意到特别是Mybatis-Plus启动的时候很慢,所以我尝试关掉Mybatis-Plus启动日志的打印,但依然没有效果。后来大佬指点,使用了jstack看到了项目启动卡住的方法。

interface InetAddressImpl {

    InetAddress[]
        lookupAllHostAddr(String hostname) throws 
}

实现方法

 public InetAddress[] lookupAllHostAddr(String host)
                    throws UnknownHostException {
                    return impl.lookupAllHostAddr(host);
                }

 在这个方法上打断点,项目启动后,host为我本机的hostname(Mac用户可以在命令行输入 hostname 可查看本机hostname)

return impl.lookupAllHostAddr(host); host : C-9KL86NDL-1560.local

之后会根据我的hostname找到我的主机,但这个地址是我的外网地址

ret = localAddrs[0]; C-9KL86NDL-1560.local/20.26.126.353

问题来了,我ping了下这个hostname,ping不通,这就说明框架也找不到我的主机,那就会一直等待,最终导致了启动变慢。

解决方法

  在我的/etc/hosts文件中配置hostname的地址映射,将我的hostname映射成127.0.0.1,这样框架就会直接找127.0.0.1。

ret = localAddrs[0]; C-9KL86NDL-1560.local/127.0.0.1
127.0.0.1 localhost	(你的hostname)

参考文章:为什么必须配置hosts文件映射-hostname问题整理

你可能感兴趣的:(Java)