写点什么

Spring 应用性能调优

  • 2007-11-29
  • 本文字数:1581 字

    阅读完需:约 5 分钟

在来自 SpringSource 的一份新白皮书中,Adrian Colyer 说明了 Spring 所提供的运行时环境。

Spring 编程和配置模型已经得到很好的理解并有大量的文档,而且被全球数十万开发者所使用。这个白皮书是为管理 Spring 应用程序的运营团队而写的。

白皮书的第一部分回顾了 Spring 内核的核心职责,它们是: - 引导程序 —— 创建应用程序上下文,它为应用程序提供运行时上下文。

  • 决定组件配置 —— 决定哪些应用组件需要被创建、它们是怎样被配置的、以及它们需要什么样的支持服务。这个步骤也就是大家所熟知的蓝图(blueprint)阶段,这时决定了服务准备情况。
  • 实例化、配置及装配 —— 使用蓝图,组件现在可以在需要的时候被构造。这一阶段极为重要,因为 Spring 需要需要考虑组件间的依赖、特定顺序、以及构造机制。这一阶段的失败将导致应用程序不可操作。
  • 组件后处理(Post Processing) —— 调用被 Spring 企业级服务和用户服务器注册为后处理器的组件。
  • 装饰 —— 当使用 AOP 命名空间或标注类将横切组件行为描述、声明为 aspect 时,Spring 内核就有了额外的任务。所描述的切入点(pointcut)需要被许可,并为原始组件产生一个代理,以便用额外的功能装饰该组件。
  • 管理组件生命周期和范围 —— 由于组件可能有不同的生命周期和范围,Spring 内核将持续监视创建、重用和销毁组件。

白皮书中更有趣的部分涉及 Spring 应用程序性能调优。象其他任何应用程序一样,首先建议使用如 Apache JMeter、Selenium、JAMon 或利用 Spring AOP 或 AspectJ aspect 去测量一下性能。 > 于是最优化归结为两类:建立一个有效的蓝图(调优你的配置)、有效使用运行时设施(使你的应用设计最优化)。从一个干净且清晰的设计开始,充分利用 Spring 提供的设施,只在数据显示确实有好处的地方才无需遵循这一点。

建立一个有效的蓝图
为了建立一个有效蓝图,你需要利用你的部署平台,让环境依赖脱离 Spring 配置。当声明数据库连接和 JMS 连接时这一点尤为重要,那些利用 JNDI 的地方能使你充分利用你的部署平台设施。白皮书所提供的其他建议是: > Spring 的 PropertyPlaceholderConfigurer 非常适合将那些可能需要由运营团队修改的配置设定外部化。

而且 > 这里一个好的技巧是使用 Spring 的 JMX 输出(export)能力来定义一个 MBean,它通过 JMX 来暴露所有配置值。这使你能够连接到一个正在运行的应用程序上,并很容易看到它当前正在使用的配置值。

利用运行时最优化
许多产品运行时的性能问题都会被跟踪至持久层,拥有正确优化过的数据库和数据访问层是极其重要的。

  • 争取在 eager 和 lazy 装载策略之间找到恰当的平衡点
  • 在 log 中显示出 SQL 语句
  • 对于批量操作、大批更新或插入、以及存储过程,通常最好使用 JDBC(通过 Spring JDBC)而非 ORM 工具
  • 充分利用你的数据库所提供的特性
  • 如果你有一个包含完整持久性逻辑(并非业务逻辑)的操作,考虑将它作为存储过程移到数据库中,并通过 Spring JDBC 来调用
  • 只读引用数据可以被保持在内存缓存中

性能调优章节的结尾是从 SpringSource 的一些顾问那儿搜集的其他调优和最优化技巧的汇总:

  • Spring Batch 项目中支持的重试可以用来重试失败的操作(例如,在 Oracle RAC 中,一个在某一簇节点上已经失败的操作)。通过减少传播到最终用户失败的数量,可以减轻运营负担。
  • 不要低估 Web 内容展现的开销。你应该明确地在事务之外做这项工作。
  • 不要每次请求都实例化应用程序上下文(它是团队移植遗留应用到 Spring 上时不时会碰到的错误)。
  • 对可以在后台运行的任务,考虑使用 Spring 的异步任务执行器来减少用户等待时间。
  • 选择合适的远程协议。如果你不需要 SOAP 的互通性,一个简单方案(如 Spring 的 HttpInvoker 支持)将更快更简单。
  • 对影响大部分应用程序的 aspect,考虑使用 AspectJ 代替 Spring AOP。

完整的白皮书可以从 SpringSource 下载。 查看英文原文: Performance Tuning Spring Applications

2007-11-29 01:503466
用户头像

发布了 150 篇内容, 共 50.2 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

外贸网站预算持续削减,这个轻量应用服务器搞定老板

YG科技

内卷出奇迹!华为云耀云服务器L实例凭实力成为_卷王_

平平无奇爱好科技

穿越经济寒冬,华为云这款轻量应用服务器助力企业破局新生

平平无奇爱好科技

数字化尽头是轻量应用服务器,华为云耀云服务器L实例打开无限可能

轶天下事

双11电商节未“战”先“卡”?华为云这款轻量应用服务器是时候亮出“必杀技”

轶天下事

不让竞品活了?华为云这款轻量应用服务器更强规格来袭!

YG科技

小程序开发经费紧张,华为云这份省钱秘笈请点赞收藏

YG科技

企业ERP实施仍存三大难点,华为云耀云服务器L实例助力破局

平平无奇爱好科技

中小企业如何以最低成本数字化?华为云耀云服务器L实例给出完美答案

平平无奇爱好科技

“跨”入蓬勃生长新时代,华为云耀云服务器L实例赋能跨境电商

平平无奇爱好科技

轻量应用服务器领域,这款产品何以被冠“国民级”美誉

平平无奇爱好科技

年终项目抢进度?华为云这款轻量服务器全面冲刺全年目标

轶天下事

基于javacv的人脸识别和图片内容审核方案

智慧源点

人脸识别 内容审核

跨境电商网站旺季爆单崩溃?华为云这款轻量应用服务器值得拥有

平平无奇爱好科技

年终企业采购潮来袭!华为云这款轻量应用服务器值得入手

轶天下事

全面宣战!华为云耀云服务器L实例推出更强规格

YG科技

降维打击_友商_?华为云这款轻量应用服务器性能全面升级

平平无奇爱好科技

电商网站防崩溃秘诀来袭!华为云这款轻量应用服务器稳赚不赔

轶天下事

大语言模型|人工智能领域中备受关注的技术

许思王

人工智能 大语言模型

客户削减项目开发预算,试试华为云这款轻量应用服务器保质保量

YG科技

高效率低成本!网站开发还得仰仗华为云这款宝藏工具

平平无奇爱好科技

项目开发冲刺难度大?华为云这款轻量应用服务器助力大好“收官战”

平平无奇爱好科技

小程序游戏卡的“掉渣”,华为云耀云服务器L实例助你重回丝滑体验!

YG科技

小程序开发更吸“金”,华为云这个轻量应用服务器功不可没

YG科技

“出海”在即?华为云这份跨境电商运营指南让新手商家少走弯路

平平无奇爱好科技

还迷信传统服务器开发小程序游戏?华为云耀云服务器L实例才是“正道”

平平无奇爱好科技

跨境电商网站运营最苦岗位?华为云这款轻量应用服务器轻松胜任

平平无奇爱好科技

年底续费服务器太贵?华为云这款轻量应用服务器正是最佳入手时候

轶天下事

双11终极之战,华为云耀云服务器L实例点燃狂欢高潮

YG科技

C语言与C++语言混合编程的方法

王玉川

c 混合编程 C++

小程序游戏如何选择服务器?华为云轻量服务器重塑体验

轶天下事

Spring应用性能调优_Java_Ian Roughley_InfoQ精选文章