提高J2EE层与数据库层交互操作能力优势

大多数应用程序性能管理(APM)解决方案都只考虑和分析J2EE应用程序的某个层次的性能问题。这种方法不足以解决架构复杂的应用程序的性能问题。良好的APM工具应该能够让你从J2EE层深入到数据库层以确保性能问题被快速地解决。

情况并非越来越好,公司的网站性能下降到了极低点,失落的客户开始寻找其它厂商了。IT调查机构开始调查并且认为J2EE应用程序是响应时间较差的罪魁祸首。这立即给J2EE开发小组带来了很大的压力,他们必须确定并解决这个问题。

J2EE开发小组在进行了一些最初的调查之后,他们认为问题并不是出在J2EE层,而是一直可以跟踪到数据库中。但是数据库小组反驳说问题实际出在J2EE层。相互之间的责备不断增加,小组合作精神消失了,混乱开始流行,客户和收入持续减少。

上面的这种情况突出了一个重大需求:为了支撑J2EE和数据库层之间更好的交互操作能力,IT部门必须能够快速和果断地做出决定。

基本的挑战:找出问题的起因

当响应时间的延迟赶走了Web站点的用户的时候,J2EE开发者就不得不加入这个相互责备的游戏中了。在中间层开发应用程序的程序员必须与数据库交互操作,当性能瓶颈出现的时候,如果数据库是下层的起因,问题也显示在J2EE层。其实真正的问题在于交互操作。如何最好地调节这两个层次之间的综合关系以获取应用程序的最佳性能?更深入一点,如何查看这些瓶颈、识别真正的问题起因,并尽可能快地处理这些问题呢?

很多APM(应用程序性能管理)工具都可以辅助我们识别和解决这些性能问题。查找J2EE应用程序中的瓶颈的最常用的两种方法是:

1、使用带不同颜色警报的仪表程序来监视系统的状态。绿色的意思是良好的,黄色或红色意味着你必须处理性能问题了。这个仪表程序还可以报告系统中不同的组件的响应时间。

2、不是等待性能恶化到一定程度才去跟踪仪表程序的警告信息,而是采用预先防护的方法并试图识别出过多的响应时间或资源使用。你可以通过检查顶层服务请求(根据响应时间)并进一步分析它们调用了什么组件来实现这样的操作。

假设有一个银行系统。一个查看帐户信息的顾客访问了你的Web站点以获取过去七天自己的帐户的概要信息。该顾客点击了"获取帐户概要信息"链接。

获取帐户概要信息的过程是通过Web浏览器调用某个特定的URL来完成的。当然,在下层,它调用了很多组件,这些组件交互操作来提供正确的输出信息。在查找瓶颈的过程中,你从顶层的调用(可能是doGet()或doPost()方法)开始,循着调用树查看"获取帐户概要信息"服务调用的所有组件,接着查看这些组件所调用的组件,一直到最底层,在很多情形中,它可能是使用JDBC(Java数据库连接)调用数据库的SQL语句。

你必须知道这些组件中哪些花费的时间过长了,但是采用这种方式逐步分析的时候会花费很多时间,经历很多烦心的过程,在你对它们中个别角色不是太熟悉的时候尤其如此。你必须查看每个组件,并询问自己它花费的时间是否太长?用10秒钟来生成输出信息以响应 "获取帐户概要信息" 是必须的吗?你也不是特别肯定,因为如果要了解这些信息的话,你必须知道下层的每个方法或程序组件是如何运行的细节信息。唯一知道这些信息的人恐怕只有某个特定组件的开发人员。如果你怀疑问题出在数据库的响应时间上,那么就需要联系数据库小组进一步研究这个问题。 隔离SQL语句

假设检索帐户信息花费了太长的时间。每个请求帐户概要信息的用户需要等待15秒才会有响应。那么问题会出在数据库一方吗?有没有可能是应用程序代码的问题?网络的问题?甚至于可能是该用户的互联网连接太慢的问题呢?

但是,在这种情况下你如果怀疑是数据库检索的问题就是应该受到责备的。查找起因的一个方法是让APM工具显示应用程序发出的所有SQL语句,按照响应时间进行排序,这样你就可以看到某个SQL语句是否因为出错的原因花费了太长时间(有些SQL语句会花费很长时间——例如按帐户检索一年内所有事务的列表)。

时间: 2024-11-10 00:29:47

提高J2EE层与数据库层交互操作能力优势的相关文章

最大化J2EE和数据库交互操作的性能

概述:大多数应用程序性能管理(APM)解决方案都只考虑和分析J2EE应用程序的某个层次的性能问题.这种方法不足以解决架构复杂的应用程序的性能问题.良好的APM工具应该能够让你从J2EE层深入到数据库层以确保性能问题被快速地解决. 情况并非越来越好,公司的网站性能下降到了极低点,失落的客户开始寻找其它厂商了.IT调查机构开始调查并且认为J2EE应用程序是响应时间较差的罪魁祸首.这立即给J2EE开发小组带来了很大的压力,他们必须确定并解决这个问题. J2EE开发小组在进行了一些最初的调查之后,他们认

数据库层抽象工厂解决方案归档[不断升级版]

解决|数据|数据库 简单工厂模式就是根据提供给它的数据,返回几个可能类中的一个类的实例.通常它返回的类都有一个共同的父类和共同的方法,但是每个方法执行的任务不同,而且根据不同的数据进行了优化.比如X是一个基类,xy和xz是从它派生出来的,XFactory类根据给出的参数决定返回那一个子类,返回那一个类的实例与程序员无关,因为这些类有同样的方法,只是实现不同,返回那个类的实例取决于工厂,工厂功能可能很复杂,但通常都是相当简间的. 接下来我们用一个例子来说明这个简单的工厂模式.假如我们要输入一个人的

ssh框架的。。购物车用数据库dao层,service层,和action层怎么写啊

问题描述 ssh框架的..购物车用数据库dao层,service层,和action层怎么写啊 求大神给指点一下!!!!!!!!!!!!!!!!!!谢谢了!!!!!!!!!!!!!!!!!! 解决方案 dao层和service层Android中的分层----service 层domain层,dao 层,action层等设计Action层 Service层 ,modle层 和 Dao层的作用? 解决方案二: Action层 Service层 ,modle层 和 Dao层的作用?Action层 Ser

J2EE中dao层和Service层的理解

  dao层 最基本的CRUD操作,方法体里的内容一两句代码搞定.如this.save(student)等等.   Service层 ①可能调用多个dao.有一个Service,叫StudentService.比如存进去一个Student,利用的是StudentDao.要把存入Student这个操作,记录到系统日志里面,还要调用LogDao.这样就需要把两个Dao注入到StudentService里面.   ②可能加入了逻辑判断.比如存入一个student对象,那么这个student对象可能是"

用户与系统实时交互操作比较多的业务系统改如何实现

问题描述 各位好现在B/S.C/S结构应该说很多人都在讨论,尤其是3层结构比较主流的今天.向大家请教一个问题,我现在负责做一个业务系统,用户与系统实时交互操作比较多.之前的经验是纯c/s两层结构,所有业务逻辑写在客户端,后台直连数据库.使用微软的开发技术,vb.但现在要把考虑到维护方便和用户体验,依然想用c/s结构,但要把业务逻辑独立出来,最终使用三层结构.但这方面我做的java的比较多,如果想使用.net有没有哪位大虾有经验的.或是客户端用c#写,业务逻辑.持久层用j2ee的东西,可行否.非常

AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】_AngularJS

本文实例讲述了AngularJS实现与Java Web服务器交互操作的方法.分享给大家供大家参考,具体如下: AngularJS是Google工程师研发的产品,它的强大之处不是几句话就能描述的,只有真正使用过的人才能体会到,笔者准备在这篇文章中,以一个简单的登录校验的例子说明如何使用AngularJs和Web服务器进行交互. 准备工作 1.下载angular js库. 官网下载地址:https://angularjs.org/ 或者点击此处本站下载. 2.开发环境准备,由于是和Tomcat服务器

Linux内核协议栈-从BSD socket接口层到传输层1

本文接上一篇Linux内核协议栈-初始化流程分析,在上一篇中主要分析了了Linux内核协议栈涉及到的关键初始化函数,在这一篇文章中将分析协议栈的BSD socket和到传输层的流程.采取的方式是分析socket相关的主要系统调用.针对不同的系统调用,其到达的协议层深度可能不同,有的基本只到sock层就够了,但是有些可能需要会涉及到比如tcp的具体细节和更底层的细节.本文基本追溯到传输层的开始,再深入的细节后续文章分析. 1.准备 协议的基本分层: (A代表socket的某个系统调用) BSD s

持久层和数据访问层有区别吗

问题描述 很多地方如百度百科神马的都说数据访问层又称持久层,这两个真的等同吗? 解决方案 严格的来说是不同的,持久层的数据和数据库是不完全同步的,数据访问层只管理数据库的链接和操作,数据和数据库是同步的.持久层包含了数据访问层,做分布式必须在数据访问层做.解决方案二:没区别吧.持久层是不是有缓存啊....如果用JDBC还能叫持久层吗? 这是个问题.解决方案三:只是不同的说法而已,经典的三层架构嘛 表示层->业务逻辑层->持久层(数据访问层)

《MPLS在Cisco IOS上的配置》一1.4 MPLS控制层和数据层构件

1.4 MPLS控制层和数据层构件 MPLS在Cisco IOS上的配置 在Cisco路由器上,MPLS功能能够正常工作的前提是路由器已经开启了CEF(Cisco Express Forwarding).因此,Cisco平台实现MPLS时,需要在全局和接口下都开启CEF.请读者注意,信元模式MPLS的数据层只需要传统的ATM交换机即可,不需开启CEF.有关信元模式MPLS的讲解,详见本章后续内容.CEF是Cisco私有的数据包交换技术,可以提高路由器的转发性能. 路由器为了转发数据包,必须维护I