7

Reddit网友:Springboot升级后性能下降

 7 months ago
source link: https://www.jdon.com/72019.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Reddit网友:Springboot升级后性能下降 - 极道

我最近为我的团队进行了 springbootJava 从 2.7 到 3.1.2 的升级,以及从 Java 11 到 Java 17 的升级。这次升级后,我们发现性能非常糟糕。我在前后也进行了性能测试。我们的一个 API 的 p99 延迟约为 2 秒,但升级后跃升至 5.5-6 秒。我们还升级了tomcat版本到10.1.X

你们对此有什么想法吗?有没有人在升级后也遇到过这种性能下降的情况。

  • 我们对两个 API 进行了性能测试,这两个 API 都进行了降级。
  • 虽然我怀疑 spring 是罪魁祸首,但由于许多项目都使用它,而且这种降级会出现在科技新闻中,但这并非不可能。您还可以检查您的配置文件。也许Spring正在诠释一些不同的东西。
  • 你使用什么持久层?也许您可以检查查询的执行时间。
    进一步检查要点:
    - 您是否禁用了延迟初始化?
    - 自升级以来是否启用了任何其他弹簧选项(即使是默认情况下)?
  • 您需要分析您的应用程序并查看所有时间都花在哪里了。分析应用程序的旧版本与新版本也很有用。
  • 您做了什么来识别瓶颈?您启用了任何分析吗?也许编写自定义注释来跟踪应用程序层?我同意这与 spring 和 java 升级直接相关。确保准确指出真正的时间损失,以便我们提出更多建议。
  • 听起来像是 Hibernate 问题(Spring Boot 升级也更新了所有依赖项), Spring Data默认随 Hibernate 一起提供,升级到 Spring Boot 3.0 后,幕后可能会发生变化:我们还遇到了 Hibernate/JPA 的问题。参数化查询导致执行时间更长(从毫秒到约 30 秒),我们将其更改为 Criteria。
  • 也许您应该升级到可以利用虚拟线程的 Java 21。
  • 我发现在 Spring Boot 中覆盖核心依赖项的各个版本可能会产生奇怪的效果。一般来说,我只会在安全问题需要时才这样做。分析应用程序,您可能会发现一些愚蠢的事情,例如阻止设置某些线程池大小的配置名称更改。(问我怎么知道的)
  • 我强烈建议运行 APM,例如 New Relic、Dynatrace 等...它们会非常快速地向您显示慢点,并且还允许您比较任何版本或更新的前后情况。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK