Java EE企业系统性能问题的原因和解决建议

标签: java ee 企业系统 | 发表时间:2012-09-14 07:48 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

Pierre-Hugues Charbonneau(昵称是P-H)是加拿大CGI公司的高级IT顾问和系统架构师。近日他发表了题为《 导致Java EE企业性能问题的十大原因》的文章,列举了对Java EE企业系统性能影响最大的因素,并做出了很好的建议。

在文中,P-H首先指出,在设计和实现Java EE相关技术的时候,性能问题是我们所要面临的最大挑战之一。对于IT架构师和Java EE开发者来说,很重要的是要理解客户端的环境,并确保提出的解决方案不仅能够满足日益增长的业务需要,并且能够确保生产环境在长期之内的可伸缩性和可靠性。

接下来他列举了在过去十年中所遇到的Java EE性能问题的原因,并做出了一些高层次的建议。十大原因包括:

  1. 缺少合适的容量计划。
  2. Java EE中间件环境规格说明不充分。
  3. 过度的Java虚拟机垃圾回收。
  4. 与外部系统过多或者很差的集成。
  5. 缺少合适的数据库SQL调优和容量计划。
  6. 对应用程序特定的性能问题。
    1.  线程安全代码的问题。
    2. 缺少通信API的超时处理。
    3. I/O、JDBC或者关系型持久API资源管理的问题。
    4. 缺少合适的数据缓存。
    5. 过度的数据缓存。
    6. 过度的日志记录。 
  7. Java EE中间件调优问题。
  8. 主动监控不充分。
  9. 通用基础设备上硬件饱和。
  10. 网络延迟问题。

针对这些问题,P-H做出的建议包括:

  • 项目团队应该花足够的时间,为Java EE生产环境创建合适的运营模型。
  • 找到Java EE中间件规格的平衡点,像业务和运维团队提供足够的灵活性,以应对运行中断的情况。
  • 避免在32位的JVM中部署过多Java EE应用程序。中间件的设计可以处理多个应用程序,但是JVM可能不行。
  • 在需要的时候选择64位JVM替换32位的JVM,但是要有合适的容量计划和性能测试,以确保硬件能够支持它。
  • 确保你的监控程序对JVM的垃圾回收有很好的理解。
  • 要记住,垃圾回收相关的问题可能不会再开发或者功能测试阶段发现。
  • 合适的容量计划包括负载和性能测试,在调优数据库环境的时候非常重要,它能够在SQL级别找到问题。
  • 如果你使用Oracle数据库,要确保DBA团队对AWR报告做出了评审。
  • 利用JVM Thread Dump和AWR报告找到运行缓慢的SQL,并使用选定的监控工具来做同样的工作。
  • 确保花费足够时间来增强数据库环境的运行能力(磁盘空间、数据文件、REDO日志、表空间等等),还要做出合适的监控和警告。
  • 评审你当前的Java EE环境监控能力,并找到提升的机会。
  • 你的监控解决方案应该尽可能覆盖端到端的环境,包括主动的警告。
  • 监控解决方案应该与容量计划过程保持一致。

各位读者,你在设计、实现和运维Java EE企业系统的时候是否也遇到过性能问题,这篇文章会对解决那些问题提供一些帮助。同时也希望你可以分享自己的案例及解决方案。

侯伯薇 是InfoQ中文站架构社区编辑,有多年对日和国内项目开发经验,目前关注企业中技术与实际业务之间的融合和协作。

相关 [java ee 企业系统] 推荐:

Java EE企业系统性能问题的原因和解决建议

- - InfoQ cn
Pierre-Hugues Charbonneau(昵称是P-H)是加拿大CGI公司的高级IT顾问和系统架构师. 近日他发表了题为《 导致Java EE企业性能问题的十大原因》的文章,列举了对Java EE企业系统性能影响最大的因素,并做出了很好的建议. 在文中,P-H首先指出,在设计和实现Java EE相关技术的时候,性能问题是我们所要面临的最大挑战之一.

红帽的 PaaS 平台 OpenShift 支持 Java EE 6

- Jackphone - ITeye资讯频道
红帽公司刚对其旗下的 PaaS (Platform-as-a-Service) 平台—— OpenShift 做了改进,增加对 Java EE 6 的支持,这使得 OpenShift 成为第一个支持 Jaav EE 6 的 PaaS 解决方案平台. 该免费平台使用了最近刚发布的 JBoss Application Server 7  版本,用于帮助开发者在云端更便捷地构建和发布Java 的应用程序.

如何进行Java EE性能测试与调优

- - ITeye博客
性能测试不同于功能测试,不是对与错的检验,而是快与慢的衡量. 在进行真正的性能测试之前要先搞清楚目标:. 在确定的硬件条件下,可以支持的并发数越大越好,响应时间越快越好. 具体需要达到的并发数是多大,要求的响应时间是多快,由产品经理来提出. 在确定的硬件条件下,测试得到最大并发数和相应的响应时间之后.

影响Java EE性能的十大问题

- - 博客 - 伯乐在线
本文作者是一名有10多年经验的高级系统架构师,他的主要专业领域是Java EE、中间件和JVM技术. 他在性能优化和提升方面也有很深刻的见解,下面他将和大家分享一下常见的10个影响Java EE性能问题. 容量规划是一个全面的和发展的过程标准,预测当前和未来的IT环境容量需求. 制定合理的容量规划不仅会确保和跟踪当前IT生产能力和稳定性,同时也会确保新项目以最小的风险部署到现有的生产环境中.

JBoss AS 7.1全面兼容Java EE 6 Full Profile

- - InfoQ cn
上周发布了 JBoss AS 7.1,这是首款全面兼容Java EE 6 Full Profile的JBoss服务器,继Apache Geronimo和Oracle GlassFish之后,成为了 又一款全面兼容Java EE 6 Full Profile的开源服务器. 去年,JBoss AS 7.0完成了 Java EE 6 Web Profile认证,但Full Profile中还额外包含Java Message Service、WebServices和多项管理技术.

Java EE 7 三大新特性的介绍

- - 博客 - 伯乐在线
013 年 6 月中旬甲骨文公司发布了 Java EE 7,该版本的新特性主要集中在提高开发人员的生产力、加强对 HTML5 动态可伸缩应用程序的支持和进一步满足苛刻的企业需求这三个方面. Java EE 7 使得开发人员可以写更少的样板代码,通过丰富的组件来提供一个完整、全面、集成的堆栈来支持和构建最新的 Web 应用程序和框架,同时提供更具扩展性、丰富性和简易的功能.

Java EE项目中异常设计及处理总结

- - Java - 编程语言 - ITeye博客
异常,为我们处理非正常的业务流程提供了很好的解决方案,如果你有过dbase、c、pascal等过程式语言开发的经历,你一定会深刻体会到,异常机制给你的代码可读行、可维护性带来的好处,同时,程序的健壮性也得到了增强. 在 java项目中,异常设计要注意下面的几点. A、自定义异常的父类,可以选择为RuntimeException或Exception.

遵循Java EE标准体系的开源GIS服务平台架构

- - CSDN博客Web前端推荐文章
传送门 ☞ Android兵器谱 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229. 传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229. 传送门 ☞ GoF23种设计模式 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229.

遵循Java EE标准体系的开源GIS服务平台之二:平台部署

- - CSDN博客架构设计推荐文章
传送门 ☞ Android兵器谱 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229. 传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229. 传送门 ☞ GoF23种设计模式  ☞  转载请注明  ☞  http://blog.csdn.net/leverage_1229.

遵循Java EE标准体系的开源GIS服务平台之三:数据发布与访问

- - CSDN博客Web前端推荐文章
传送门 ☞ Android兵器谱 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229. 传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229. 传送门 ☞ GoF23种设计模式.         在GIS服务平台构建完毕之后,我们就要着手在此平台上提供服务以供客户端请求访问.