java - Hibernate 和 DispatcherServlet 初始化的关系
问题描述
我们有一个 Spring Boot 应用程序,它的启动时间对我们来说是一个劣势;它正在减慢 CI/CD 进程。它的启动时间约为 140 秒;
- WebApplicationContext 初始化在约 30 秒内完成
- org.hibernate.boot.internal.MetadataImpl.getSessionFactoryBuilder -> ~30 秒
- DispatcherServlet 初始化在约 60 秒内完成
- 其余操作大约需要 20 秒。
我研究了如何增加 Spring 启动时间,并阅读了Spring 有多快?博客和相关的 stackoverflow帖子。但是,这些对我们没有帮助,因为实际问题不同。例如,只有 DispatcherServlet 初始化在约 60 秒内完成。因此,我研究了 DispatcherServlet,发现它与 Spring 完全相关;只是一个 FontController,所以它应该比当前版本更快。
但是,在 DispatcherServlet 初始化时,我看到休眠打开了一个连接并提交了一些东西。休眠提交大约需要 50 秒,而整个 DispatcherServlet 初始化大约需要 60 秒。
然后,我进行了调试,发现在 DispatcherServlet.initHandlerMappings() 调用时发生了提交,但我不能走得更远。
你知道为什么 DispatcherServlet 初始化需要这么多时间吗?
日志文件中有关 DispatcherServlet 初始化的一部分:
2021-04-16 14:47:12 INFO 1 DispatcherServlet | Initializing Servlet 'dispatcherServlet'
2021-04-16 14:47:16 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:16 WARN 1 NamedQuery | Finder method public abstract java.util.List com.example.TestRepository.getTestList1(org.springframework.data.domain.Pageable) is backed by a NamedQuery but contains a Pageable parameter! Sorting delivered via this Pageable will not be applied!
2021-04-16 14:47:16 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:16 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:16 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:16 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:16 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:16 WARN 1 NamedQuery | Finder method public abstract java.util.List com.example.TestRepository.getTestList2(org.springframework.data.domain.Pageable) is backed by a NamedQuery but contains a Pageable parameter! Sorting delivered via this Pageable will not be applied!
2021-04-16 14:47:16 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:16 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:16 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:16 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:17 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:47:17 DEBUG 1 TransactionImpl | begin
2021-04-16 14:47:17 INFO 1 p6spy | #1618573637572 | took 152ms | statement | connection 1| url jdbc:p6spy:firebirdsql:localhost/8080
SELECT 1 FROM TEST_QUERY
SELECT 1 FROM TEST_QUERY;
2021-04-16 14:47:17 DEBUG 1 TransactionImpl | committing
2021-04-16 14:48:03 INFO 1 EndpointLinksResolver | Exposing 15 endpoint(s) beneath base path '/app'
2021-04-16 14:48:04 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:48:04 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:48:04 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:48:04 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:48:04 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:48:04 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:48:04 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:48:04 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:48:04 DEBUG 1 TransactionImpl | On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2021-04-16 14:48:04 INFO 1 DispatcherServlet | Completed initialization in 52429 ms
解决方案
推荐阅读
- html - 我在移动设备上的页脚被页面截断
- python - 在具有 w1、w2 等周数的索引上尝试 Sort_Index,但它不起作用?
- azure - 尝试调用 B2C 登录时 Cors no-access-control-allow-origin
- python - 直方图分组定制
- serverless-framework - 使用无服务器框架时更改 API 网关名称
- excel - Excel VBA 从 ASCII 文件导入数据并绘制平均值
- python-3.x - 如何创建将整数转换为具有序数的字符串的代码块?
- assembly - 在 x86-64 asm 中:如果源操作数是两个立即值,是否有办法优化两个相邻的 32 位存储/写入内存?
- ruby-on-rails - 如何重定向到页面上的某个锚点
- php - 如何批量编辑php函数以用自定义关键字列表替换某些关键字