Cod*_*ard 8 java spring hibernate spring-boot
我最近刚刚将我的一个团队 Spring Boot 应用程序从 2.1.3-RELEASE 升级到现在的 2.3.0-RELEASE,并将 Hibernate 版本从 5.3.6.Final 升级到 5.4.15.Final。
一切都很好,但是现在当应用程序在服务器上启动时,它需要 800-900 秒才能启动(大约 15 分钟),而过去只需要大约 30 秒。
需要注意的重要一点是,在 localhost 上运行时,使用 2.1.3 和 2.3.0,应用程序启动是相同的,大约 12-15 秒。
只有部署到服务器时才会遇到启动缓慢的问题。
我确定问题出在新版本的 Spring Boot 上,因为我切换到 SpringBoot 2.1.3 并将 Hibernate 保留为 5.4.15,并且启动速度很快。
那么,在最近的 SpringBoot 版本中是否有一些变化,我必须设置一个属性来禁用某些检查或其他东西?
我看过的大多数文章和帖子都说问题在于 Hibernate 并设置了此属性,spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false但我这样做了,但没有任何效果。
更新:
我尝试了该属性,spring.main.lazy-initialization=true但它对启动性能没有影响。
更新 2:
我从 2.3.0 降级到 2.2.7,这导致平均启动时间为 170 秒,而 2.3.0 的平均启动时间为 800 秒。大约 3 分钟的启动时间仍然很糟糕,但是,除了版本之外没有其他变化的 12 分钟差异,我想知道它是否过于雄心勃勃而无法使用最新版本的 Spring Boot。
如果有人对为什么我们将从 2.1.3 的 30 秒开始时间变为 2.2.7 的 3 分钟开始时间有一些建议,仍然非常好奇。
2.1.x 和 2.2.x 之间是否引入了重大更改?
最后更新
我尝试了 2.2.5 版本,结果与 2.1.3 相比没有降低启动性能。如果启动性能有所提高。所以,这让我相信 2.2.6 及更高版本的引擎盖下发生了一些变化。
我将坚持使用 2.2.5,但如果有人尝试使用这些最新版本的 Spring Boot,我仍然希望得到答案。
我在尝试从 Spring Boot 2.2.6 升级到 2.3.0 时遇到了同样的问题。在服务器或 docker 容器中运行 spring boot 应用程序时,我观察到应用程序启动时间较慢,并且在 win 和 mac 上都没有看到本地运行的问题。
出于好奇,我选择了spring-petclinic并尝试在 docker 上运行它。这就是我能接受的启动时间。
使用 Spring Boot 2.3.0
2020-05-29 15:33:28.957 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 22.723 seconds (JVM running for 24.397)
2020-05-29 15:41:08.278 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 22.955 seconds (JVM running for 24.641)
2020-05-29 15:42:20.741 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 24.847 seconds (JVM running for 26.534)
2020-05-29 15:43:28.472 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 24.645 seconds (JVM running for 26.294)
2020-05-29 15:43:58.152 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 23.931 seconds (JVM running for 25.609)
2020-05-29 15:44:30.186 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 24.708 seconds (JVM running for 26.608)
Run Code Online (Sandbox Code Playgroud)
使用 Spring Boot 2.2.6
2020-05-29 15:40:25.829 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 19.062 seconds (JVM running for 20.474)
2020-05-29 15:41:35.797 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 18.18 seconds (JVM running for 19.582)
2020-05-29 15:48:36.693 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 18.648 seconds (JVM running for 20.067)
2020-05-29 15:49:00.379 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 18.548 seconds (JVM running for 19.978)
2020-05-29 15:49:23.282 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 18.808 seconds (JVM running for 20.218)
2020-05-29 15:49:47.100 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 19.862 seconds (JVM running for 21.285)
2020-05-29 15:50:08.247 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 16.599 seconds (JVM running for 17.916)
Run Code Online (Sandbox Code Playgroud)
我想知道那个地区发生了什么变化......
令人惊讶的是 spring boot 2.3.1 看起来更好,几乎与 2.2.x 相同:
2020-06-19 21:16:18.935 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 18.886 seconds (JVM running for 20.552)
2020-06-19 21:16:43.461 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 18.637 seconds (JVM running for 20.091)
2020-06-19 21:17:07.226 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 18.526 seconds (JVM running for 20.007)
2020-06-19 21:17:30.172 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 19.694 seconds (JVM running for 21.209)
2020-06-19 21:17:57.662 INFO 1 --- [ main] o.s.s.petclinic.PetClinicApplication : Started PetClinicApplication in 20.348 seconds (JVM running for 21.85)
Run Code Online (Sandbox Code Playgroud)
我建议尝试一下 2.3.1。
| 归档时间: |
|
| 查看次数: |
1672 次 |
| 最近记录: |