springboot项⽬启动慢的问题排查⽅式
⽬录
hibernate要学多久springboot项⽬启动慢的问题排查
1.最开始查看的启动⽇志,是在输出:
2.启动项⽬,打印⽇志级别改为debug,查看更详细信息
如何优化SpringBoot的项⽬的启动速度
实际上它是下⾯三个注解的组合
可以⽤@SpringBootApplication注解下⾯的属性
springboot项⽬启动慢的问题排查
springboot项⽬,随着时间的推移,启动耗时逐步增加,从⼏分钟慢慢的达到30多分钟,有点恐怖!
项⽬中⽤到技术:hibernate、redis、kafka、线程池等,启动慢的环境使⽤的是mysql数据库!
1.最开始查看的启动⽇志,是在输出:
org.hibernate.id.UUIDHexGenerator : HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values; consider using org.hibernate.id.UUIDGenerator instead
后停滞,等相当长时间后继续输出:
o.urrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'taskExecutor'
怀疑是创建kafka、线程池等导致耗时,通过去掉相关对象创建,耗时仍⽆改观!
2. 启动项⽬,打印⽇志级别改为debug,查看更详细信息
发现:⼤量的alter table 增加外键!奇怪,不是第⼀次启动项⽬,mysql库中的表早已创建好,为什么每次都要重复alter?
查看mysql相关表发现⽆外键,表引擎为MyISAM!此引擎不⽀持外键!
在使⽤hibernate⾃动创建表时,mysql中建表使⽤的MyISAM引擎,查看配置:
dialect:应使⽤org.hibernate.dialect.MySQL5InnoDBDialect
这就解释了:为什么orcle环境下没有此问题,⽽mysql就有,其随着时间的推移,表中数据逐渐增加,在启动时alter table耗时严重!
如何优化SpringBoot的项⽬的启动速度
⽇常开发SpringBoot项⽬启动类都⽤@SpringBootApplication
实际上它是下⾯三个注解的组合
@EnableAutoConfiguration: enable Spring Boot's auto-configuration mechanism
@ComponentScan: enable @Component scan on the package where the application is located (see the best practices)
@Configuration: allow to register extra beans in the context or import additional configuration classes
启动慢往往跟@ComponentScan和@EnableAutoConfiguration加载的内容太多有关,⼀种⽅法是不⽤这两个注解,通过@import注解精确指定要加载扫描的类,但要加载的类多时⼜很⿇烦,
可以⽤@SpringBootApplication注解下⾯的属性
exclude: Exclude the list of classes from the auto configuration.
excludeNames: Exclude the list of fully qualified class names from the auto configuration. This parameter added since spring boot 1.3.0.
scanBasePackageClasses: Provide the list of classes that has to be applied for the @ComponentScan.
scanBasePackages Provide the list of packages that has to be applied for the @ComponentScan. This parameter added since spring boot 1.3.0.
另外,如果SpringBoot项⽬启动很慢,可能意味着你要重新拆分微服务。
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论