通过压力测试改善Web应用程序的性能
2022-10-02
来源:意榕旅游网
维普资讯 http://www.cqvip.com 科技信息 0计算机与网络信息拉术0 SCIENCE INFORMATION 2006年第4期 通过压力测试改善Web应用程序的性能 衣马木艾山’孙(1、华东师范大学教育技术系2003级研究生 上海萍 。83oo00) 200071;2、乌鲁木齐职业大学 新疆 乌鲁木齐摘要:本文阐述了对微软Net平台的Web应用程序怎么进行压力分析,创建可控制测试环境,制定压力测试・}生能目标度量,解决Web网站性能等内容。 关键字:压力测试;服务器错误率;吞吐量;响应时问;延迟处理 微软的.Net战略使我们可以通过统一的标准来连接不同的信息,设备 和个人。因此具备Web功能对于传统的桌面应用程序来说已不再是一个 可有可无的功能而且是必须的功能。优秀的Web应用程序必须具备高度 的可靠性和町扩展性。Web应用程序投入使用后,在同一时刻.呵能有成 千上万个用户访问该应用程序。超额的访问量可能会给系统造成巨大的压 力,从而造成 可预期的延迟,最后使这些访问者失望而归。而在一个 Web应用程序在发布以前,开发人员如果能对它进行各种压力下的严密 的压力测试和优化,那么开发人员可以确保程序发布之后,其性能上的优 良表现会让大家满意。 1,压力测试是Web应用程序开发周期的非常重要的一个步骤 压力测试是通过某种负载下对应用程序进行测试,米确定程序的最 大吞吐量(吞吐量是指在一个固定的时间段内能够处理的用户请求数)。压 力测试也通常被理解为负载测试,性能测试,Soak测试,Spike测试和 WebServer测试。压力测试的目的是为r识别和隔离Web应用程序的在 负载下出现的性能瓶颈.降低或消除瓶颈带来的影响,从而使程序达到或 超过期望的流量需求。在确认瓶颈部位后,就可以对证下下药.优化Web 应用程序和服务器.使对用户的响应时间达到最小,最终是用户更方便的 使用它。 2.精确的系统配置创建可控制的测试环境 对于一个Web应用程序进行负载模拟,通常是通过一系列基于硬件 和软件的用户模拟来实现的。钡4试过程中除了足够数量的浏览器连接和合 适数量的压力测试客户端机器外,要搭建一个可控制的测试环境。可控制 的测试环境意味着将使用专门的计算机作为压力测试客户端。以及使用专 门的服务器来运行被测试的程序。这些机器在硬件规格 应该和你的产品 环境尽可能接近。如果性能问题无法再现那么测试结果就变得毫无意义。 创建可控制测试环境准确配嚣相应部件。 2l硬件与软件配置 试验系统应尽可能镜像生产系统。CPU、RAM 和网络带宽的硬件配置是将在压力测试期间被检测的最重要方面。务必将 测试Web站点配置成能够在进程内或进程外运行,具体配置成什么样以 最终配置的要求为准。选择该选项将确定Web应用程序是在IIS所在的 同一地址空间中运行,还是在它自己的独立地址空间中运行。该配置对于 要执行的压力测试有主要影响。 2.2 IIS配置配鼹Internet Information Server以镜像生产服务器。 “Internet服务管理器”属性页为IIS提供各种可用的调整选项。特别重要 的是确定是否启用记录(可以大大减慢系统速度)并且在“性能”选项卡下, 选择预期的每天点击数。 23安全配置应用程序的安全方案对压力下的应用程序会有严重 的性能影响,特别是系统包含加密技术(如Microsoft Cryptography API)时 更是如此。因此,应该配置测试系统以使用相同的安全方案,但不必使用相 同的凭据。 2.4用户负载配置首先确定预期访问应用程序的最大用户数。然后 将该数字加倍;成功的应用程序所服务的用户数最可能比预期的多。此外, 计算多数用户需要访问的时间,然后确定那段时间(应该是测试应用程序 的时间)内的网络负载 该策略使您能够测试用户负载影响以及系统范围 的硬件配置,确保应用程序在网络负载高峰期内按预期响应。 25选择正确的压力工具在实际的数据中心情况中,由于太多用户 通过Intranet或Internet连接到Web应用程序,Web服务器经历高连接 水平。Web压力工具应能够模拟发生高并发连接数的情形,并以充足的线 程满足最大的并发连接数,同时减小发送到web服务器的数据包大小。当 运行压力测试时,注意不要增加客户端的压力水平,以免测试汁算机在线 程间的上下文切换上花费的时间比实际运行所用的时间多。 a指定压力测试性能目标度量 在对web网站进行压力分析以前,必须实现制定出关键性能的基本 标符合我们对性能的要求。 33内存泄露在进行压力分析时,应该判断系统是否会因为存在内 存泄露而导致资源不足,或是系统只是简单的超负荷运行,需要更多的硬 件。 3.4延迟处理几乎在所有的需要些很多代码来完成的复杂的Web 应用程序中都回出现这个问题。解决这问题关键是使延迟时间最小化到可 被接受的范围之内。 4.执行压力测试 认真地拟定了测试策略后,实际运行测试是容易的。性能测试的第一 个任务是使用工具,例如Microsoft Web应用程序压力工具,将压力施加到 Web站点并测量Web服务器每秒能处理的最大请求数。这是定量测量。 第二个任务是确定哪一个资源阻止每秒请求数的提高,例如CPU、内存或 后端相关性,这个过程更具有艺术性,而不单是~种精确测量的技术。 首先,选择打算运行的ASP页。(寻找Web站点的最慢页并使用这些 页。)具体的选择取决于哪些页最频繁访问数据库并且具有最多或最复杂 的查询。当在Intemet Information Server中运行应用程序时,应该(使用性 能监视器)监视以下计数器: ActiveServerPages:每秒请求数、被拒绝的请求数、总队列长度和当 前会话数 Inetinf0process:专用字节数、虚拟字节数和打开句柄数 Processor:百分比用户时间与百分比特权时间相比 运行ASP技术的Web服务器从启动时建立的池中给每页分配一个 线程;如果所有线程都已使用,后面的页请求将被放置在队列中。通过用性 能监视器监视总的队列长度,可以确定有多少客户端正在等待服务器的响 应。 5.分析压力测试结果。解决Web网站性能问题 目标标准,指明应该如何测试Web应用程序的性能以使其能够满足高标 准的性能要求。如果不制定出一个压力测试标准,就不能在SDLC( ̄用程 序开发周期)阶段发现性能方面的要求,从而不能及时地正确测试。压力测 试的关键尺度包括以下几点: 3.1服务器的错误率服务器的错误往往会给访问者很糟糕的体验。 , 参考文献 而在压力测试阶段经常会碰到这些错误,所以分析他们为什么会发生,并 [1]Microsoft. ̄etWeb应用程『制蝴硎试MicrosoftACE/l、绢编清隹大学出版丰±2003锥 且判断在网站投入使用后用户访问你的网站这些错误会不会发生。 [2]StressTestYourWebApplicationstoAvoidSurprises 3.2 CPU的承受率这是压力测试的一个重要方面。可以实现分析 Late ̄Z].WadeWrightmsdn,September2000. 确定服务器CPU所能承受的最大负荷程度。这一步很关键,因为下一步就 [3] diaAskWeb测试指南 E京:机械工程出版社2OO4. 可以制定出WeD网站的最大负荷了。不同的Web应用程序有不同的度量 尺度。进行压力测试时,可以对WEB层施加压力,使它的CPU利用率达 到75%,在这种级别上,每个服务器可以大约为2000个用户服务,这个指 ,5.1硬件性能也许增加应用程序吞吐量最简单和最经济的解决方 案是硬件升级。通常.升级硬件比付钱给开发人员团队重写部分应用程序 要经济高效得多。 5.2数据库设计当计算有关数据库设计的问题时。请寻找作用点。分 析死锁统计,并确认已经优化了应用程序以尽可能避免死锁。如果有必要, 请考虑更改数据访问算法以避免争用。用不同的索引解决方案进行实验。 检查数据服务器的查询执行计划以确认查询正在使用适当的索引,等等。 5.3 ActiveX组件应认真分析包含对ActiveX数据对象类型库的引 用的ActiveX组件以进行可能的优化。不要使用ADO中允许的默认属性。 为避免意外使用默认属性,应总是指定某些属性。 5.4客户端游标如果Web应用程序消耗了异乎寻常的大量内存,则 游标定位的不适当使用可能就是问题的原因。当使用客户端游标 (reeordset.cursodoeation=adUseClient)时,注意客户端实际是Internet In. formation Server,而不是浏览器。(该规则的例外情况是当使用Remote DataServices时,本文不对此进行讨沦。)开发人员常犯的错误是假定客户 端游标的使用将髌个记录集移动到浏览器而不是运行IIS的计算机。因 此,记住您实际正在将记录集存储到运行IIS的计算机E将使您更多地意 识到所用的资源。 5.5 ASP执行如果包含数据访问过程的ASP页花费太长时间执行, 则可能需要将数据访问代码从ASP页移动到ActiveX组件,该组件一般 放置在MicrosoftTransactionServer(在WindowsNT中)的包中或Compo. nent Services(在Windows 2000中)的包中,这取决于正在运行的操作系 统。该编辑代码运行效率比包含在ActiveServerPage中的解释脚本代码 有效得多。 5.6 Internet Information Server负载监视正使用Intemet Information Server的应用程序数量和类型。可能需要添加附加的服务器,将应用程序 移动到另一服务器,或者考虑实现Windows L0ad Balancing Service。 6-结束语 压力测试是Web应用程序开发周期中的莺要阶段,电是产品发布之 前的重要 的一步。如果在能在测试之前正确规划,就能够成功地进行 次 压力测试 从而使用户开始使用时,这Web喇站体现出他的高性能。e