Spring/Hibernate 应用性能优化的7种方法

对于大多数典型的 Spring/Hibernate 企业应用而言,其性能表现几乎完全依赖于持久层的性能。此篇文章中将介绍如何确认应用是否受数据库约束,同时介绍七种常用的提高应用性能的速成法。本文系 OneAPM 工程师编译整理。

如何确认应用是否受限于数据库

确认应用是否受限于数据库的第一步,是在开发环境中进行测试,并使用 VisualVM 进行监控。VisualVM 是一款包含在 JDK 中的 Java 分析器,在命令行输入 jvisualvm 即可调用。

启用 Visual VM 之后,尝试以下步骤:

  1. 双击你正在运行的应用
  2. 选择 Sampler
  3. 点击 Settings 复选框
  4. 选择Profile only packages,然后输入下列包:

your.application.packages.*

org.hibernate.*

org.springframework.*

your.database.driver.package, 比如 oracle.*

点击 Sample CPU

如果应用性能受限于数据库,其 CPU 分析结果看起来会像下图:

Spring/Hibernate 应用性能优化

我们看到,客户端 Java 进程花在等待数据库从网络中返回结果的时间占56%。

看到数据库查询是导致应用运行缓慢的原因,其实是好兆头。Hibernate 反射调用占比32.7%是正常情况,无法进一步优化。

性能调优第一步:定义基准运行

性能调优的第一步是为程序定义基准运行,我们要定义一组能有效执行的输入数据,让程序基准运行与生产环境下的运行差不多。

主要的区别在于基准运行的耗时要小很多。作为参考,5到10分钟的执行时间比较不错。

什么是好的基准?

好的基准应该具备以下特征:

  • 功能正确
  • 输入数据的种类与生产环境下相似
  • 在短时间内执行完毕
  • 基准运行的优化方案可以外推至完整运行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值