动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.JDBC的数据库连接池技术研究与应.
.制作可以执行的 JAR 文件包及 ja.
.扩展JAAS.
.在Eclipse RCP中实现反转控制(Io.
.Java的逗号运算符.
.Java平台I18N 支持概述.
.Struts生成Word下载.
.优化hibernate性能的几点建议.
.Java、XML与数据库编程实践 (四).
.创建通过 WDO访问数据的 JSF 应用.
.轻松掌握 Java 泛型 (第 2 部分).
.开发银行Intranet数据报表系统.
.不再是苦差事 用Eclipse简化开发.
.定制你的Java--根据应用剪裁Java.
.Java 命 名 人 谈 Java.
.用NetBeans开发平台开发J2ME游戏.
.图解Java开发工具JBuilder 9.0.
.在Java应用程序中动态分配CPU资源.
.为TextBox组件创建简单的剪贴板.
.setFullYear 方法.

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

发表日期:2008-2-20 |


大多数应用程序性能管理(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语句会花费很长时间--例如按帐户检索一年内所有事务的列表)。

 

现在你查看一下位于列表顶部的SQL语句。它进入数据库并花费了1秒钟响应。这样的性能不是太差;如果这是性能最差的SQL语句,那么问题可能根本不在SQL语句中。因此,接下来的问题是:是不是应用程序层出了什么问题呢?谁在调用这个语句?调用了多少次?如果某个应用程序调用SQL语句的次数超过了你的预期,你就有理由怀疑应用程序出了故障。


APM工具这次又可以帮助你了。你可以简单地点击该SQL语句,会出现一个链接,显示出它的整个调用树,从顾客请求帐户概要信息开始,到进入数据库的SQL语句为止。现在你拥有了两部分信息:你能肯定自己在查看该服务请求的某个特定请求;你可以看到每个独立的组件对响应时间的影响。


现在你可以查看调用该SQL语句的组件说明,并且你发现它的响应时间是9秒钟。很明显,它是造成客户等待15秒钟的主要因素。APM工具显示的列表同时显示出这个组件7次调用了该SQL语句。这就告诉你9秒中大部分是调用SQL语句消耗的。该组件不仅执行了过多的计算,还多次调用了SQL语句。这样的操作可能有些很好的原因,但是任何性能管理工具都不能说明其起因。最重要的是你已经指出了必须进行调查的程序组件。良好的APM工具还可以为解决这个问题提供一些建议。


真的是数据库的问题吗?


让我们从另一个角度来看这个问题。假设该组件并没有多次调用SQL语句,它只调用了一次,但是这次调用却消耗了15秒中的大部分。现在的问题是,为什么单个语句需要那么长时间执行呢?这个问题不在代码中,因此它可能在数据库那一端。


你现在需要的是性能管理工具允许你对特定服务请求(获取帐户概要信息)的调查深入到数据库层。请返回你得到的SQL语句列表,点击你感兴趣的SQL语句的链接,它会把你从J2EE端带到数据库端。现在你在查看Oracle数据库或其它数据库产品环境中的SQL语句。该工具可能帮助你查明数据库端的问题,还可能提供一些专业的调整建议,数据库管理员(DBA)可以使用这些建议来提高数据库的性能。问题可能出在存放数据表空间的磁盘性能较差,建议把它移动到另一个磁盘上;也可能是丢失了某个索引,你可以通过建立新索引来提高速度;也许是数据库上并行运行了太多的线程,你必须对这些线程进行隔离以减少并发性问题。


还有其它一些可能性。数据检索可能花费太多的时间,因为花费了很长时间等待获取数据库连接。代码是良好的,数据库运行也正常,但是这样的等待时间可能告诉你数据库连接池不够大,无法处理大量的甚至于正常的通讯。你可以查询应用程序服务器,了解已经定义了多少个连接,把这个数字与典型的并发请求数进行对比,很快就可以确定是否需要更多的连接了。


提高交互操作能力


你的性能管理工具不仅需要识别出J2EE层响应时间的构成因素。它还应该能够让你看到J2EE层和相邻的数据库层之间的交互操作情况,并为分析这两个层次上的性能问题提供方法。为了高效率地处理性能问题,J2EE开发者和DBA使用综合的APM产品是必要的。它同时还让J2EE和数据库小组"用同一种语言说话"。大多数APM解决方案的目标都是架构体系中的单个层次,为单个层次提供诊断信息。使用这种方法的时候,时间会浪费、相互的责备会形成风暴、而且经常还是无从解决问题。今天复杂的架构和老练的技术意味着某个层次与其它层次之间的交互操作所导致的性能问题用这种途径是无法定位的。现在我们能够使用的最主流的APM工具允许我们从J2EE层跟踪到数据库层,以确保及时地解决性能问题,而不论问题来自于哪个层次。


结论


提高J2EE层和数据库层之间的交互操作能力带来了明显的优势:加快最终用户的响应时间、增加顾客的忠诚度、提高士气、服务的底线也更高了。现在我们可以使用的高级工具填补了J2EE层和数据库层之间的裂痕,自动地搜索瓶颈,查明起因,并为解决问题提供专门的建议。每个J2EE开发小组都应该认真地考虑这些综合的APM工具给它们的生产带来的价值。

上一篇:开发J2EE应用时应该遵循的几个基本准则 人气:1010
下一篇:只支持单表映射的持久化框架─EasyDBO 人气:1087
浏览全部J2EE的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-20 25175 学生成绩管理查询系统 v2.
2008-8-20 乘风电影程序 v3.7 Acc
2008-8-20 乘风电影程序 v3.7 Sql
2008-8-20 EasyJForum v2.2
2008-8-20 XML文章系统 v1.08 build 080820
2008-8-20 老Y文章管理系统 v2.0 build 080
2008-8-20 OA企业智能办公自动化系统边缘特
2008-8-20 欣颐免费时尚发廊美发厅全站程序
2008-8-20 凌风简单留言板 v1.0
2008-8-16 iLaba Player(小喇叭播放器) v2.
2008-8-16 DoubleClickFix 鼠标双击修正工具
2008-8-16 CrystalCPUID 4.15.2.451
2008-8-16 VeryCD 电驴(easyMule) 1.0.4 Bu
2008-8-16 uTorrent 1.8 Build 11813 - Sta
2008-8-16 比特精灵(BitSpirit) v3.3.2.287
2008-8-16 StayInTune音叉 v1.0 破解版
2008-8-16 iChing《周易》汉化补丁 v1.0
2008-8-16 Starmap星空图v1.0汉化破解版
  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵