首页 > 解决方案 > Hibernate 和 DispatcherServlet 初始化的关系

问题描述

我们有一个 Spring Boot 应用程序,它的启动时间对我们来说是一个劣势;它正在减慢 CI/CD 进程。它的启动时间约为 140 秒;

我研究了如何增加 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

标签: javaspringspring-bootperformancehibernate

解决方案


推荐阅读