首页 > 解决方案 > Spring boot 2.0 以后需要花费大量时间来绑定配置属性,因为属性的大小约为 7000

问题描述

我们将 Spring 云配置定制为企业的集中式解决方案,因此我们的配置服务器上有大约 700 个存储库。它增加了大约 7000 个弹簧配置属性,并且会不断增加。这曾经在 Spring Boot 1.5 中运行得非常快,但在 Spring Boot 2.0 之后它需要花费大量时间来映射配置属性。

我正在尝试将它与 spring cloud config 2.1.4 一起升级到 Spring boot 2.1.8,但与 spring boot 1.5.x 相比,应用程序启动时间和上下文刷新时间急剧增加。

有没有办法我们可以关闭放松绑定或其他映射功能并使用它类似于 spring boot 1.5?

标签: springspring-bootspring-cloud-config

解决方案


我没有管理如此大量属性的经验,但是我有一些有用的想法并指出了解决方案:

  1. 为什么你认为它的属性解析/宽松的绑定规则?也许还有更多的 bean 被加载,其中一些很慢,所有这些都可以“促成”缓慢的启动时间。

  2. 对于现代机器来说,7000 个属性并不是一个大数目。因此,即使在 spring boot 1.x 和 2.x 之间存在一些性能下降(我几乎不相信),它仍然不会是“相当大”的时间。

  3. 既然您提到了 spring cloud config - 它有一个可以单独检查性能的 rest API。如果您在云配置服务器上有一个执行器,则会有一个端点返回 50 个最后的请求及其执行时间。所以请检查执行时间并比较 spring boot 1.5.x 和 2.0.x

  4. 最后但同样重要的是 - 尝试分析应用程序并查看哪些 bean 是实时消费者。


推荐阅读