分享
 
 
 

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

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

概述:大多数应用程序性能治理(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工具还可以为解决这个问题提供一些建议。

真的是数据库的问题吗?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有