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企业系统的时候是否也遇到过性能问题,这篇文章会对解决那些问题提供一些帮助。同时也希望你可以分享自己的案例及解决方案。

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

  1. Java EE企业应用实战

    前 言 目前Java EE应用的开发方式大致可分为两种:一种以Spring.Hibernate等开源框架为基础,这就是通常所说的轻量级Java EE应用:另一种则以EJB 3+JPA为基础,也就是本书 ...

  2. com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1问题出现的原因及解决办法

    转自:https://blog.csdn.net/shinchan_/article/details/37818927 com/opensymphony/xwork2/spring/SpringObj ...

  3. java 程序增加 防盗_防盗Java EE –保护Java EE企业应用程序的安全

    java 程序增加 防盗 Øredev离我们仅有几天的路程,我受邀作了两次演讲. 其中之一是关于我最喜欢的主题:安全性和Java EE. 它旨在实现两个目标. 一方面向典型的Java EE开发人员介绍 ...

  4. 防盗Java EE –保护您的Java EE企业应用程序

    Øredev离我们仅有几天的路程,我受邀作了两次演讲. 其中之一是关于我最喜欢的主题:安全性和Java EE. 它旨在实现两个目标. 一方面向典型的Java EE开发人员介绍整个应用程序安全过程和主要 ...

  5. java提示null_java 出现NullPointerException的原因及解决办法

    java 出现NullPointerException的原因及解决办法 日常开发过程中,最常见的异常莫过于NullPointerException,之前的时候,只是知道去找到报错的位置,然后去解决它, ...

  6. java ee没有server,eclipse没有server选项解决方法

    eclipse是是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境. 它使用频率十分高,然而当使用它配置weblogic的时候,经常 ...

  7. Java EE 企业网站_基于jsp的企业网站系统-JavaEE实现企业网站系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的企业网站系统, 该项目可用各类java课程设计大作业中, 企业网站系统的系统架构分为前后台两部分, 最终实现在线上 ...

  8. 【JavaEE】经典JAVA EE企业应用实战-读书笔记2

    事务属性主要用于控制事务的作用域. 假设ma是一个事务a,mb是一个事务b,当ma调用mb时,是在哪个事务作用域中执行的?这个取决于mb的事务属性了. 事务属性支持如下6个值 1,Required 如 ...

  9. 轻量级java ee企业应用实战第4版 源码下载

    光盘下载地址   http://pan.baidu.com/s/1qWQboT2    提取密码  x7ni

最新文章

  1. asp.net 播放flash
  2. Linux C下实现线程池
  3. 程序员 :超越软件蓝领的七种武器
  4. [iOS常见问题] 关于使用QQ做第三方登录的问题!
  5. SalesArea F4 help implementation
  6. ieee期刊_论文绘图神器来了:一行代码绘制不同期刊格式图表,哈佛博士后开源...
  7. Xcode模拟器和真机生成的日志查看(ios必知必会)
  8. CCF201509-5 最佳文章【AC自动机】(100分解题链接)
  9. 圆周率 π 的研究、π 的等式
  10. IBM大中华区总架构师:话说程序员的职业生涯
  11. 544B. Sea and Islands
  12. android官方升级包下载安装,安卓7.0正式版安装包下载
  13. python3调用谷歌翻译_使用python3调用谷歌翻译成中文
  14. 周九常:个人知识管理的三个重点领域
  15. 如何将宿舍门变成指纹开锁?
  16. MobileNetV2: Inverted Residuals and Linear Bottlenecks论文解读
  17. 【产业互联网周报】外媒:英特尔等公司暂停向俄罗斯发货;阿里云季度营收195亿元;第四范式再次提交上市申请...
  18. Servlet设置欢迎页面!
  19. 学习一个 Linux 命令:realpath 命令
  20. 钱颖一:从清华学生身上,我发现了这7个普遍现象……

热门文章

  1. Hive分区表count(*)不起mapreduce的真相
  2. appSettings 配置mysql_app.config数据库配置字符串的三种取法
  3. linux vi编辑器 Ctrl s,Linux命令-----vi/vim编辑器
  4. java怎么生成字母_在Java中生成字母序列
  5. php实现tcp连接的原理,PHP实现TCP实例
  6. HTML5的little,HTML 5
  7. B端数据表格设计实战指南(建议收藏)
  8. 巨量引擎短视频广告价值白皮书
  9. 输入两个长度相同的字符串,比较两个数在相同位置的字符是否相同
  10. java后端项目怎么实现图片预览_项目经验不重样!3个基于 SpringBoot 的图片识别处理系统送给你!...