Spring Boot 2.x 的性能问题?

2024-01-12

我最近将Web应用程序中使用的Spring Boot版本从1.5版本更新到2.1版本。当我对其进行负载测试时,我的运行时间从 25 分钟缩短到 35 分钟。

我知道这是一个广泛的问题,但是有谁知道为什么应用程序在升级 Spring Boot 库后会显着减慢速度?

编辑:在花费大量时间尝试了解探查器输出之后,问题似乎出在与数据库的通信中。 Mariadb JDBC 驱动程序调用 java.io.FilterInputStream.read 从数据库取回数据。根据探查器,在 Spring Boot 2 中运行时,应用程序在此方法中花费的时间几乎是在 Spring Boot 1 中运行的两倍(两者都使用 Hikari)。相同的应用程序。相同的数据库。相同的 mariadb 驱动程序。只是 Spring 的版本发生了变化,以及 Spring 引入的任何内容(例如 tomcat 9 而不是 8,或者 hibernate 5.3 而不是 hibernate 5.0)

编辑#2:我做了更多测试。我使用降级的 Tomcat (8.5.37) 运行 Spring Boot 2.1,但性能仍然很差,因此 Tomcat 似乎不是问题所在。接下来,我使用升级后的 Hibernate (5.3.10) 运行 Spring Boot 1.5,性能仍然良好,因此看来 Hibernate 也不是问题。除了 spring boot 本身之外,这并没有留下太多东西,而且对我来说,为什么 java.io 中的类在一个框架下比另一个框架下花费更长的时间仍然是一个谜。

这阻止了我将 Spring Boot 更新推进到生产环境,所以我感谢您的任何指示,

Steve


性能下降可能有多种原因。所以我建议包括javamelody-spring-boot-启动器 https://github.com/javamelody/javamelody/wiki/SpringBootStarter在您的应用程序中。

这样您可能会发现最长的 http 或 sql 请求之间的性能下降。

也许更重要的是,根据负载测试或生产过程中的统计数据,您可能会发现哪些 http 和 sql 请求应该改进以提高整体性能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 2.x 的性能问题? 的相关文章

随机推荐

  • 在 Python 3 中,是否可以为具有多个基的类动态创建元类?

    在 Python 2 中 通过一个技巧 可以创建一个具有多个基类的类 尽管基类具有以下元类 not互为子类 诀窍在于这些元类本身有一个元类 将其命名为 元元类 并且此元元类为元类提供一个调用方法 该方法可以在必要时动态创建基本元类的公共子元
  • 导入python模块时出现问题

    我正在尝试使用 pythonbitstring脚本中的模块并收到导入错误 从交互模式运行时不会发生此错误 这是代码 import bitstring b bitstring BitArray bin 001001111 当这样运行时 pyt
  • Asp.net MVC Bundle - 仅允许应用程序相对 URL (~/url)

    我在将脚本包含在bundle中时遇到以下错误 有没有办法解决这个问题 URL Scripts bootstrap js 1 0 0 1 无效 仅有的 允许使用应用程序相对 URL url 我们正在使用 CDN 因此 url 将被创建为 bo
  • 如何从范围内的约束族派生类型类实例?

    edit 我又跟进了一个具体问题 https stackoverflow com questions 70088443 how can i use a constraint family thats in scope to prove in
  • string类中c_str函数的内存分配

    我有一个类的成员函数 定义如下 int x std string a std string b char ptr another member getStringMember c str I am storing the pointer c
  • Spring Security 与 DelegatingFilterProxy

    我创建了一个 Spring Security 过滤器 如下所示
  • 为什么不DriverManager.getConnection(String url, String user, char[] password)?

    我们知道使用 char 而不是 java lang String 来存储密码是一个很好的做法 这是由于以下两个原因 正如我所读到的 char 是可变的 因此我们可以在使用后清除密码 字符串文字进入一个池 该池不会像其他对象一样被垃圾收集 因
  • iOS App Store 独特的应用程序名称? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 iOS 应用程序必须有一个全球唯一的名称吗 这iTunes Connect 开发人员指南 https itunesconnect apple com
  • 将 Swagger 编辑器添加到 Angular 项目

    我想将 Swagger UI 和 Swagger 编辑器插入到我的 Angular 项目中 所以它看起来像这样 http editor swagger io docExpansion none http editor swagger io
  • Apache 给出 403 禁止错误

    好的 我之前已经设置了两个虚拟主机 它们运行得很好 它们都包含简单的网络项目并且可以很好地工作http project1 and http project2在浏览器中 不管怎样 我是来添加另一个虚拟主机的 我使用 127 0 0 1 pro
  • 创建 Galaxy S5 模拟器

    据gsmarena com网站称 Galaxy S4和Galaxy S5的规格几乎相同 当然 那些关心我们想要创建 S5 模拟器的人 是否建议使用现有的 S4 模拟器 如果没有 应该更改什么才能获得 Galaxy S5 模拟器 我当前的 S
  • 在 Entity Framework 4.3 中增量播种数据的最佳方法

    我一直在现有数据库上使用 Entity Framework 4 3 并且我有几个想要满足的场景 首先 如果我删除数据库 我希望 EF 从头开始 重新创建 我已成功使用 CreateDatabaseIfNotExists 数据库初始化程序来实
  • 为什么字符串是引用类型,但行为与其他引用类型不同?

    我们知道字符串是引用类型 所以我们有 string s God is great 但同样 如果我声明类 Employee 是一个引用类型 那么为什么下面的代码不起作用 Employee e Saurabh 2 我们如何实际确定一个类型是引用
  • Laravel 8 中未定义操作 Controller@store 的问题

    我仍在探索 Laravel 8 但我的控制器的 store 方法 未定义 有问题 InvalidArgumentException 操作 PostsController store 未定义 查看 D Server htdocs app re
  • jitpack.io - 无法解决

    我正在尝试导入一个library https github com deano2390 MaterialShowcaseView using jitpack io https jitpack io 这是我的顶级build gradle bu
  • 谷歌身份验证:OAuth2 不断返回“invalid_grant”

    我开始在我的新应用程序上配置谷歌日历 我几乎复制了谷歌开发人员显示的身份验证代码 https developers google com google apps calendar instantiate https developers g
  • Emacs 在 C 中的宏后缩进

    define INIT MACRO create some enviroment void function INIT MACRO extra indented normal indented 当要求自动缩进时 如何让emacs正确处理上述
  • 使用 AWS SDK 以 IAM 用户身份登录

    谁能帮助我了解如何使用 AWS SDK 以 IAM 用户身份登录 我正在使用适用于 Java 的 AWS 开发工具包 并且一直在寻找合适的 API 来以 IAM 用户身份登录 但我无法做到这一点 我能够传递访问密钥和密钥以使用 SDK 登录
  • 如何从 Firebase Firestore set() 调用返回承诺?

    这是我的问题的后续https stackoverflow com questions 54100270 google translate api and firebase firestore are killing each other 道
  • Spring Boot 2.x 的性能问题?

    我最近将Web应用程序中使用的Spring Boot版本从1 5版本更新到2 1版本 当我对其进行负载测试时 我的运行时间从 25 分钟缩短到 35 分钟 我知道这是一个广泛的问题 但是有谁知道为什么应用程序在升级 Spring Boot