声明:本文禁止未经本人同意的任何形式转载!如有转载需求,可与本人通过个人资料中的电子邮箱联系。对于未经同意的转载,本人将保留进一步行动的权利
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技术在实际企业应用中的轻量化解决方案。这本书的第十章内容虽然被压缩包包含,但整体书籍覆盖的范围可能更为广泛。下面将根据章节...
"SSM"是Spring、Spring MVC和MyBatis三个框架的缩写,它们是Java EE开发中的重要组成部分,尤其在现代企业级应用中广泛使用。本教程将深入探讨这三个框架的核心原理,以及如何遵循良好的代码规范来实现高效、可维护...
《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》是一本深入讲解如何使用Java EE技术栈进行企业级应用开发的教材。它主要聚焦于Spring框架、Spring MVC以及MyBatis这三大核心组件,它们是现代Java Web...
Java EE轻量级解决方案通常指的是在企业级应用开发中,使用一些相对小巧、高效且易于配置的框架,来替代传统重量级的EJB(Enterprise JavaBeans)架构。SSH(Struts、Spring、Hibernate)是Java EE领域中一个经典的...
《轻量级Java EE企业应用实战》是李刚编著的第三版书籍,该书主要针对Java EE在企业级开发中的实践应用进行深入探讨。Java EE(以前称为J2EE)是一个用于构建分布式、多层的企业级应用程序的平台,它提供了一系列的...
### Java EE面试题总结 ...Hibernate主要用于简化数据访问层的开发,提供了一套完整的ORM解决方案;而Struts则是一个用于构建Web应用程序的MVC框架,能够帮助开发者更好地组织代码结构,提高开发效率。
《轻量级Java EE企业应用实战(第三版)》是一本深入浅出的软件开发教材,专注于Java EE技术在实际企业应用中的应用。该书由知名讲师李刚老师编写,旨在帮助开发者掌握如何构建高效、可扩展且易于维护的企业级应用。...
这个项目可能包含了从用户界面到后端数据处理的全套功能,旨在提供一个完整的电商解决方案。 【描述】描述中的"JAVA+JDBC+mysql网上商城.rar"表明这是一个融合了Java开发、JDBC数据库操作以及MySQL存储的在线购物...
本书主要聚焦于S2SH框架,即Struts2、Spring和Hibernate的集成,这三大框架在Java EE领域中被誉为轻量级开发的黄金组合。它们各自负责Web应用的不同层面,Struts2负责视图和控制,Spring提供全面的依赖注入和事务...
为了更好地解决这些问题,本文将基于一系列链接资源,探讨不同方面的Java知识点及其应用场景,为开发者提供实用的解决方案。 #### 1. 使用XML配置Log4j - **知识点概述**:Log4j是一款开源的日志框架,它支持定制...
#### 第三章:开发第一个Java应用程序 **3.1 手工编写与运行Java程序** - **编写Java代码**:使用文本编辑器(如Notepad++)编写简单的Java程序。 - **编译Java程序**:通过命令行使用javac命令编译Java源代码。 -...
此外,Java Persistence API(JPA)作为ORM(对象关系映射)的标准,替代了原先的Hibernate和iBatis等第三方解决方案。 3. **Java EE 5中的关键技术和规范**: - **EJB 3.0**:引入了注解驱动的编程模型,减少了...
Java Web应用开发技术实用...此外,教程中可能还会包含实战项目,以帮助你将理论知识应用于实际场景,提升解决实际问题的能力。通过学习,你将具备独立开发和维护Java Web应用的能力,为未来的职业生涯奠定坚实基础。
13. **Java应用实践**:通过案例分析和实战项目,将所学知识应用于实际问题的解决,提升开发能力。 虞益诚老师的TP-3534Java程序设计及应用开发教程将全面覆盖以上内容,通过理论讲解与实例演示相结合的方式,帮助...
**JavaEE API中文帮助文档**:此文档为JAVA EE API提供详尽的中文解释,包括各种接口、类、方法等的说明,是开发者解决实际问题的重要参考资料。 **JavaEE整合开发**:这一资源侧重于介绍如何将JAVA EE中的不同技术...
这三个框架的结合,为开发者提供了高效、灵活的后台开发解决方案。本篇将详细介绍SSM框架中的Mybatis部分,以及如何在实际项目中进行配置和应用。 Mybatis是一个优秀的持久层框架,它简化了JDBC的复杂性,使得...
【Java EE轻量级解决方案——SSH】是一种广泛应用于企业级应用开发的技术栈,它由三个主要部分组成:Spring、Struts和Hibernate。本章节重点讨论的是Spring框架的深入理解和应用。 Spring是Java EE平台的核心组件,...
在Java EE轻量级解决方案中,SSH框架集成是一个重要的主题,它涉及到Web应用的架构设计、业务逻辑处理和数据持久化等多个方面。通过深入学习和实践,开发者可以熟练掌握这一技术,为构建高效的企业级应用打下坚实...