http://dev.21tx.com 2003年12月29日 javaResearch
“让你的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
如果你或你的公司很有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之路很长,一步一步走吧!!
分享到:
相关推荐
本文将深入探讨Microsoft .NET Web应用程序性能测试的相关知识点,旨在帮助开发者理解如何优化和测量其.NET Web应用的性能。 一、性能测试的基本概念 性能测试是评估系统在特定工作负载下的响应时间、吞吐量、资源...
Web应用程序测试是确保产品质量的关键环节,它涉及到对用户界面、功能、性能、安全性等多个方面的评估。以下是关于Web应用程序测试方法和技术的详细说明: 1. **界面测试**:界面是用户与应用交互的第一道门,因此...
"捉虫记 大容量Web应用性能测试与LoadRunner实战"这本书深入探讨了这个主题,特别关注了使用HP LoadRunner这一强大的性能测试工具进行实战演练。 Web性能测试旨在识别并解决可能导致应用程序性能下降的问题,例如...
9. **调试和测试工具**:为了确保在不同设备上正常运行,开发者可能需要模拟器或设备模拟器进行测试和调试,移动Web应用程序组建可能包含这些工具。 10. **持续集成和部署**:对于移动Web应用,持续集成和自动化...
【基于LoadRunner的Web应用程序测试方法的研究与实现】 在当今的互联网时代,Web应用程序已经成为企业和个人用户日常工作中不可或缺的一部分。由于其复杂性和高并发性,确保Web应用的性能和稳定性至关重要。...
在文件列表中,我们看到一个名为《面向.NET的Web应用程序设计》模拟题(打印).doc的文档,这很可能是为备考者准备的一套模拟试题,包含了一系列与.NET Web应用开发相关的问答题、选择题或案例分析,旨在帮助考生熟悉...
ASP.NET Web应用程序开发是...总而言之,ASP.NET Web应用程序开发涵盖了从基本的Web控件使用到高级的架构设计和性能优化等多个方面。通过学习和实践,开发者可以构建出功能丰富的、响应式的Web应用,满足各种业务需求。
《论文_基于Web应用的测试研究与应用》探讨了在软件开发领域中,尤其是Web应用程序的测试策略、方法和技术。Web应用测试是确保系统稳定、可靠、高效运行的关键环节,涵盖了多个方面,如功能测试和性能测试。 功能...
为保证 Web 应用软件的质量和可靠性,Web 应用程序性能测试技术的研究越来越受到人们的重视。讨论了 Web 应用的性能测试原理和测试工具,并对一个 Web 应用实例进行性能测试,然后对测试结果进行分析,根据测试结果...
4. 在本地测试Web应用程序 - 使用Visual Studio中的调试工具运行应用程序,通过Ctrl+F5命令在不调试的情况下运行。 - 确保应用程序能正确运行,并可以在本地浏览器中查看。 5. 部署Web应用程序到Windows Azure -...
在进行Web应用程序测试时,有两个关键建议: - 用户为中心:始终以用户的需求和体验为出发点,设想他们在实际使用中的场景,模拟各种可能的操作路径,找出可能的痛点。 - 持续测试和改进:测试不是一个一次性完成的...
总的来说,"使用WAS对Web应用程序进行负载测试"涵盖了从设置测试环境到执行测试,再到结果分析和优化的全过程。这个过程不仅可以帮助开发者和运维人员确保Web应用程序在高负载下的稳定运行,还可以在早期发现和解决...
在本文中,我们将深入探讨"WEB应用程序设计代码完整版"这一主题,这涵盖了Web程序设计与开发的关键技术和实践。Web应用程序设计是构建基于互联网的应用程序的过程,这些应用程序可以在Web浏览器中运行,为用户提供...
Web应用程序开发是一个广泛的领域,涵盖了从前端到后端的各种技术和工具。这个教程旨在提供一个全面的指导,帮助学习者掌握创建交互式、动态和高效Web应用的技能。书中的实例源码和电子课件是强化理解和实践的重要...
《捉虫记——大容量Web应用性能测试与LoadRunner实战》是一本专注于LoadRunner工具在大规模Web应用程序性能测试中的实践指南。LoadRunner是HP(现已被Micro Focus收购)推出的一款强大的负载和性能测试工具,广泛...
现代Web应用程序的体系结构是构建高效、可扩展和用户友好的网络应用的关键所在。随着互联网技术的不断发展,现代Web应用已经不再局限于简单的HTML和JavaScript页面,而是采用了多种技术和架构模式来提升性能、安全性...
综上所述,面向.NET的Web应用程序设计涵盖了广泛的知识点,包括.NET Framework的基础、ASP.NET的开发模型、数据访问、Web服务、安全性以及性能优化。微软考证是对这些技能的权威认可,通过系统学习和实践,开发者...