WEB应用措施的测试与优化概述
副标题#e#
“让你的WEB应用措施完成你想做的工作是一回事,而让他们快速、有效的去做经常是别的一回事。”
在这篇文章里我将劈头接头有关“WEB应用措施的机能”的问题,主要是一些根基观念以及东西,算是抛砖引玉吧!留意这些内容同样合用于J2EE应用。从此,也许我会写更多关于此方面的文章。
首先,这里有两本机能方面的重要指标。请留意,下面的“界说”并不类型,仅供参考。
* Response Time – 响应时间
从初始化请求到完成响应所用的时间。这是一个测试WEB应用措施速度的重要怀抱。
* Scalability – 伸缩性
一个可伸缩的应用措施的响应时间随负载的增加而线性增加。
没有WEB应用措施可以处理惩罚无限数目标请求,可是一般我们可以预测一个范畴,并担保我们的WEB应用措施可以在此范畴内“优雅”的伸缩,即始终把响应时间维持在可接管的级别。
假如我们规划优化我们的WEB应用措施,那么至少我们应该知道它到底该不应优化。压力测试可以解答这个问题。
* Load Test – 压力测试
为WEB应用措施模仿用户请求以丈量其伸缩性的进程。它很是有用,固然开始的时候会以为有点“失常”。一般我们会模仿大量的用户请求以得到在WEB应用措施的速度恶化到无法接管的级别前可以或许处理惩罚的并发请求数量。
所谓“无法接管的级别”并不是必然要到实例池瓦解、应用处事器瘫痪甚至处事器当机的时候,这要视需求而定。
一般压力测试包括如下步调:
* 确定接管请求并完成响应的最大答允的延时。
* 预计WEB应用措施的最大并发用户数量。
* 模仿用户请求,以一个较量小的负载开始,逐渐增加模仿用户的数量,直到WEB应用措施的 相应延时高出最大延时。
* 假如负载比预计的用户数量小,那么应该优化这个WEB措施,不然你选择性的执行优化。
你不会在思量本身写一个测试措施吧?算了,何须再从头发现一次轮子?这里有一些压力测试东西,它们各有特色,先先容免费的:
* Web Application Stress Tool, Microsoft, http://www.microsoft.com
* JMeter, Java Apache Project, http://www.apache.org/
* LoadItUp, BroadGun Software, http://www.broadgun.com
#p#副标题#e#
假如你或你的公司很有Money,可能需要越发富厚的成果,可以利用以下贸易软件,不外它们都代价$10,000,甚至更多:
* WebLoad, RadView Software, http://www.radview.com/
* SilkPerformer, Segue Software, http://www.segue.com/
* Benchmark Factory, Quest Software, http://www.benchmarkfactory.com/
* LoadRunner, Mercury Interactive, http://www.mercuryinteractive.com/
无论你选择哪种东西,它都至少应该提供以下的成果,以便为以提供富厚且有意义的测试数据:
* 发送GET和POST请求
* “记录”从欣赏器发送的GET和POST请求(以免开拓者需要手写这些符合的请求)。
* 获取和发送COOKIE。
* 多线程
* 模仿用户延迟
* 记录机能数据
* 节制带宽
我赌博假如你以前没有打仗过以上这些内容,那么你的WEB应用措施很难在压力测试中得到令人满足的功效。你会看到响应时间会跟着请求数量的增多而暴涨,甚至呈现一些我们不想看到的环境,好比“拒绝毗连”。
一旦没能通过压力测试我们应该如何应对呢?优化!没错,不外我们怎么知道哪里应该优化呢?Profiler可以对此提供许多的辅佐。(我不知道怎么翻译它更贴切一些,所以爽性不翻译了!)
Profiler提供这样的成果,它可以检测你的应用措施并提供一些有用的运行时信息,好比某块代码的执行时间、内存/堆的利用环境、内存中的工具实例数量等等。好比,我们想知道到底是哪个Java工具的哪个要领淹灭了更多的时间。
以下是一些Profiler:
* Quantify,Rational Software,http://www.rational.com/
* Optimizeit,Intuitive Systems,http://www.optimizeit.com/
* JProbe,Sitraka Software,http://www.jprobe.com/
请留意,我们不能过度依赖东西,固然它们许多时候可以极大的是我们的事情变得简朴、轻松。一般假如你知道了系统的瓶颈地址,修改往往是一件相对轻松的工作。小我私家认为寻找、发明系统的瓶颈地址才是最要害、也是最浮现一小我私家功力的步调。这是一个很是专业的问题,它需要你对所利用的应用平台、软件架构、数据库系统、网络情况等等诸多方面很是深的造诣。这并不浮夸,任何一个会JSP和JDBC的人都可以写出一个WEB应用措施来,可是那还相差太远……限于篇幅,话题先举办到这里。其实你可以在许多处所找到有关测试和优化能力的文章,都很是有针对性,好比TheServerSide.com、JavaLobby.com等。Java之路很长,一步一步走吧!!