声明:本文禁止未经本人同意的任何形式转载!如有转载需求,可与本人通过个人资料中的电子邮箱联系。对于未经同意的转载,本人将保留进一步行动的权利
JDBC连接池
大部分Java EE应用都需要通过JDBC连接后台数据库。因为创建数据库连接的消耗的资源巨大,所以应用服务器都选择缓存一定数量的连接对象并在各个请求处理之间共享。如果请求需要数据库的连接,但连接池中已经不能提供空间的连接,也不能创建一个新连接,那么请求就需要等待别的连接被释放后才能工作。反之,如果数据库连接池太大的话,就会浪费应用服务器的资源。本部分调优的全部努力就是旨在找出请求需要等待的最佳点,以便最小程度影响饱和的资源——如果数据库的压力很大的话,让请求在外面等待会更好。
连接不够的应用服务器可能的表现有:
应用性能低下
CPU利用率低
数据库连接池利用率高
线程等待数据库连接
执行线程的利用率高
队列中可能有请求等待
数据库服务器的CPU利用率不太高
当观察到这些现象时,可以调高数据库连接池的大小直至数据库连接的利用率在普通负荷的情况下大约在70%~80%之间。在整个过程中也需要注意数据库的负荷情况,我们也不希望对数据库产生过大的负荷压力。
JDBC prepared statement
对JDBC调优另一个重要的部分就是恰当配置JDBC连接中prepared statement的缓存大小。当应用对数据库执行SQL语句时,主要经历三个阶段:
准备
执行
检索
在准备阶段,数据库驱动向数据库发出请求,数据库需要生成查询的执行计划。在执行阶段,数据库执行查询,并返回结果集的引用。在检索阶段,应用遍历结果集并获取需要的信息。
数据库驱动能优化这一过程:第一次准备一个语句时,它就让数据库生成查询计划并缓存结果。在后续的操作中,已经准备好的语句(prepared statement)就能从缓存中加载进来,而不需要重回数据库获取。
当prepared statement的缓存尺寸太小时,数据库驱动将被强制再次准备无缓存的语句,如果重新回到数据库去数据的话将导致额外的处理开销和网络时间。Prepared statement缓存不足的主要征兆即是JDBC不断重复准备对同一语句的处理。
稍微要复杂一点的是,prepared statement是按照每用户的基础来进行缓存的,也就是说一个语句的缓存仅为一个连接准备,所以如果当应用有100个语句需要缓存而连接池中有50个连接时,就需要有足够大的空间来容纳5000条prepared statement。
在性能监控的环节中,确定应用一共运行了多少条不同的SQL语句,这样就可以根据每条语句执行的频率来决定prepared statement的缓存大小。
总结
每个应用的情况都是不同的,但是上述的一些问题还是比较多出现的。本文并未涉及具体的应用服务器产品及其调优方案,而是从整体的角度对一些通用的情况做出了分析。在真正实施调优的时候,需要根据业务需求、硬件条件、软件情况等多方面的内容做相应的调整。
Java EE应用中的性能问题解决方案参考资料下载
声明:本文禁止未经本人同意的任何形式转载!如有转载需求,可与本人通过个人资料中的电子邮箱联系。对于未经同意的转载,本人将保留进一步行动的权利!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/BU_BetterYou/archive/2008/06/04/2510499.aspx
分享到:
相关推荐
精通Java EE:精通Java EE 整合应用案例\源代码第三章
《轻量级Java EE企业应用实战:Struts2+Spring4+Hibernate整合开发(第4版)》重点介绍如何整合Struts 2.3+Spring 4.0+Hibernate 4.3进行Java EE开发,主要包括三部分。第一部分介绍了Java EE开发的基础知识,以及...
轻量级Java EE企业应用实战第三版第二章源码
轻量级Java EE企业应用实战第三版第三章源码第一部分
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
Java_EE中文乱码问题解决方案:如果你是从事java web开发,中文乱码是不是经常遇到,这里有详细的配置如果从MyEclipse(Eclipse),TOmcat中修改代码的格式,从而达到总体的编码一致,杜绝乱码
Java EE WEB 工程师培训------JDBC+Servlet+JSP整合开发
中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子...
轻量级java ee企业应用实战(第3版)—struts 2+spring 3+hibernate整合开发原名
第三部分示范开发了一个包含7个表、表之间具有复杂的关联映射、继承映射等关系,且业务也相对复杂的工作流案例,希望让读者理论联系实际,将三个框架真正运用到实际开发中去,该案例采用目前最流行、最规范的java ee...
轻量级Java EE企业应用实战第三版第三章源码第二部分
java EE 7 & HTML5 应用开发——构建和部署同时支持桌面和移动设备的动态高性能企业级应用.rar
第三部分示范开发了一个包含7个表、表之间具有复杂的关联映射、继承映射等关系,且业务也相对复杂的工作流案例,希望让读者理论联系实际,将三个框架真正运用到实际开发中去,该案例采用目前最流行、最规范的java ee...
轻量级java ee企业应用实战(第三版)李刚著电子书第三部分 总计四部分,需要将资源全部下载完成解压至同一目录下才能打开
第1讲Java EE 应用和开发环境,适合大学自学的好文章,欢迎前来下载
本书是《轻量级Java EE企业应用实战》的姊妹篇,《轻量级Java EE企业应用实战》主要介绍以Spring+Hibernate为基础的Java EE应用;本书则主要介绍以EJB 3+JPA为基础的Java EE应用。EJB 3、JPA规范都属于Sun公司所制订...
第三部分示范开发了一个包含7个表、表之间具有复杂的关联映射、继承映射等关系,且业务也相对复杂的工作流案例,希望让读者理论联系实际,将三个框架真正运用到实际开发中去,该案例采用目前最流行、最规范的Java EE...
10个影响Java EE性能的常见问题 达内java培训的老师感觉不错,分享给大家
本书介绍了Java EE轻量级的三个开源框架:Struts2、Hibernate和Spring。其中在Struts2部分主要讲解MVC设计思想,Struts2的处理流程及配置,Struts2常用控制器组件,以及Struts2常用标签库的使用。在Hibernate部分...
本文作者是一名有10多年经验的高级系统架构师,他的主要专业领域是Java EE、中间件和JVM技术。他在性能优化和提升方面也有很深刻的见解,下面欧柏泰克和大家一起分享下他所分析的常见的10个影响Java EE性能问题。