5.5 对你的ASP程序作负载测试
|
源代码网整理以下J.D. Meier 源代码网整理以下September 27, 1999 源代码网整理以下内容 源代码网整理以下 源代码网整理以下介绍 源代码网整理以下这篇文章将会介绍如何对你的ASP程序进行压力测试,同时将会介绍微软的压力测试工具- Web Application Stress test Tool (WAS).在接下来的一章,你将会学习到压力测试的基础,同时还会学到一些必要的技巧,通过这些学习,你将可以根据测试的结果更加有效的测试和修改你的程序。 源代码网整理以下剧情 源代码网整理以下测试需求 源代码网整理以下· 最低用户数量。(这个程序的使用者的最低数量是多少?通常这个数值可以是每日或没周或每月的点击量—当然你也可以分解成一个更可控的数值—每小时访问量,) 源代码网整理以下· 并发用户的总量. (在最高峰时的糟糕状况是什么?作出相应的计划. 希望在有压力的情况下工作正常有效.) 源代码网整理以下· 请求高峰值. (每秒钟需要产生多少ASP页面? 这也许是在衡量一个ASP程序对用户请求作出反应的能力时的一个最重要的因素.) 源代码网整理以下为你的程序决定用户量和并发用户数通常是很困难的事情,而且是在你的程序在被实际使用之前。尤其是网络程序。即使是局域网程序也常常要面对用户增加的问题,所以准确的预计用户量将会是困难的。当你不知道怎么开始时,最好从基础的开始: 源代码网整理以下Internet需要考虑的问题: 源代码网整理以下· 你的站点将会有多流行?流行的站点一天会有100万或更多的访问量。不会那么流行?那么假设一些不同的情况?假设你有1000以上的用户群?你能通过增加更多的硬件设备来解决扩展性问题吗?或者,你的程序的架构会成为瓶颈吗? 源代码网整理以下· 什么是最糟糕的情况?问一下你的朋友这些情况会发生吗? 源代码网整理以下Intranet需要考虑的问题: 源代码网整理以下· 这个ASP程序是可以给每个人用的吗?在公司内部网有多少台机器?你的系统管理员可以告诉你有关网络高峰流量的东西吗? 源代码网整理以下· 这个程序有特定的用户对象吗?只是HR人力资源部?有多少个人力资源部的员工在使用? 源代码网整理以下· 最糟糕的情况是怎样的? 源代码网整理以下如果你不能提前决定适当的负载,那么确定你的程序的最高上限将是你最好的选择。如果被10个用户点击,你能在1秒内产生多少的ASP响应结果?100个呢?1000个呢?10000个呢?记录你的基准。当你从实际使用中得到你的流量日志显示你正在接近你的极限时,你将不仅会为你知道你当前的极限是什么,而且你会有时间准备解决的办法。 源代码网整理以下介绍测试工具WAS 源代码网整理以下虽然有很多的压力测试工具可供选择,但是在本文,我会主要集中介绍WAS(就是以前所谓的Homer),WAS是当前微软的标准网页压力测试工具。如果你已经对WebCat很熟悉了,你会激动的发现WAS可以很方便地导入现有的WebCat脚本。如果你以前用过InetMonitor,你会激动的发现WAS也是基于GUI的(对于很多使用命令行的WebCat的用户来说这将会是一个很好的附加特性)。另一个好处是它是免费的,我的一个好朋友常说,“如果是免费的,那么就是我的。”除了它的价格优势外,这个工具还提供了完整的功能,而且还在不断地升级更新中。Microsoft.com经常要使用它,所以他们会明白这个工具的重要性。 源代码网整理以下但是你不需要过多地理会我的话,只管自己去尝试。我在文章的结尾会提供一个列表,列出一些第三方的压力测试工具,你可以自己决定选什么工具。底线是你需要一个工具,能够把你的ASP程序放到负载下,在发布之前测试它。 源代码网整理以下开始使用WAS 源代码网整理以下首先你需要下载和安装这个工具。你能从下面的链接中得到最新版本 源代码网整理以下http://www.microsoft.com/technet/treeview/default.asp?url=/TechNet/itsolutions/intranet/downloads/webstres.asp. 在这个网站上还会有关于这个工具的入门指导,你可以随时回去看看。 源代码网整理以下以下是在安装时需要注意的几点: 源代码网整理以下· 不要把WAS安装在你的测试目标服务器上,安装在别的机器以确保得到准确的测试结果。 源代码网整理以下· 在安装WAS的机器上需要有ADO2。1以上的版本。如果oledb32.dll的版本不是2.10.3711或以上,ADO会被WAS自动安装。 源代码网整理以下· 在安装后你会有一个完整的安装日志,默认会在Program FilesMicrosoft Web Application Stress ToolINSTALL.LOG. 源代码网整理以下· 如果你已经安装了旧版本的WAS,更新时会保留数据文件完好。WAS使用Access .mdb文件作为数据存储文件。WAS的初始.mdb包是WAS.mdb,可以在程序安装路径找到。 源代码网整理以下· WAS在注册表的HKEY_LOCAL_MACHINESOFTWAREMicrosoftWAS存储注册信息。 源代码网整理以下在运行我们新安装的WAS之前,我们创建一个简单的ASP脚本作为测试页面。创建一个新的叫做MyASPPage.asp 的ASP页面,然后插入以下脚本: 源代码网整理以下MyASPPage.asp 源代码网整理以下在服务器的恰当的目录放置你的ASP页面以使它可以被匿名访问。我们在后面将会再试署名访问的测试,但是现在我们需要运行一个最基本的测试。用全路径URL浏览你的页面,包括你的服务器名。例如,一个完整的URL看起来像http://MyServer/MyVirtualDirectory/MyASPPage.asp。一旦你能成功地浏览你的ASP页面(务必检查MyFile.txt这个文件,这个文件会被程序写在虚拟目录的物理位置),你就可以运行WAS做实际的测试了。 源代码网整理以下当你第一次运行WAS时,将会出现下面的对话框: 源代码网整理以下 源代码网整理以下虽然其他选项也很诱人,现在我们先选Manual 这项。将来你还可以从菜单的Scripts或在工具拦点取New Script图标来创建一个新的脚本。 源代码网整理以下欢迎来到脚本浏览界面。左手边的窗口以树型结构列出了你的脚本。在右手边的窗口里你可以修改你的脚本设置。 源代码网整理以下在左手边的窗口里的树状列表单击New Script可以激活脚本的浏览。在Server输入框输入你的服务器的名字。在Script Item的第一项,选择GET作为你的动作。在PATH输入你的ASP地址,以虚拟目录为开始符。见图Figure 2如下: 源代码网整理以下 源代码网整理以下这时候,你可以点工具条上的Run Script箭头符号来执行你的脚本(务必确保你在左边的窗口点取了正确的脚本)。在产生一个概要的性能报告之前,这个脚本需要运行大概1分钟的时间。 源代码网整理以下分析测试结果 源代码网整理以下点Overview,你将看到这个测试活动的一个简要快速的分析。从ASP的技术角度看,Request per Second,是一个需要深入分析的关键值。这个值越高越好。通常,如果你不能从使用报告和预算中决定出一个特定的目标,你可以让ASP 的Requests per Second值高于30,当然这个ASP是没有连数据库或使用其他组件的。因为可以预见,连接数据库将增加程序的负担。 源代码网整理以下虽然有Request per Second这个计数器默认包含在WAS里,你也许想增加其他的计数器。你可以在点了Perf Counters的图标后通过点Add Counter来增加其他的计数器。一个特别有用的计数器是ASP Requests Queued,这个计数器往往是在识别一个阻塞或长期驻留的页面或组件时的关键。关于分析ASP性能的资源有: 源代码网整理以下· Tuning Internet Information Server Performance 源代码网整理以下· Navigating the Maze of Settings for Web Server Performance Optimization 源代码网整理以下· IIS 4 Resource Kit 源代码网整理以下影响性能和可测量性的因素 源代码网整理以下· 如果你在访问一个数据库,你是否有做连接池?关于连接池的详细资料请看Pooling in the Microsoft Data Access Components. 源代码网整理以下· 你是否在使用ASP Session 变量来存储状态?Session 变量会很快地影响可测性。它们需要服务器资源,而且如果你想增加机器以扩展性能,它们会起阻碍作用,因为Session是与特定机器相关连的。无状态是最大化可扩展性的方法。关于Session的替代请参考这篇文章: HowTo: Persisting Values without Session. 源代码网整理以下· 你是否在Session状态中存储有Visual Basic的组件?现在就去掉它们。Session中的Visual Basic对象会导致线程相关性而且会干扰打击IIS的线程池。这是一个复杂的主题,但是满足它的经验方法是:不要在Session中存储Single-threaded Apartment (STA) objects。如果你需要在Session中保留对象,它们应该被标记为”Both”,而且你需要自己聚合这些自由线程成为一个集合。Active Template Library (ATL)可以创建这样的怪物。 源代码网整理以下· 你的网络程序是被限定运行在它自己的内存空间的吗?实际上我们推荐进程保护。然而,如果你需要榨出一些额外的性能,在进程中运行你的网络程序将会节省一些交叉进程集合的开销。 源代码网整理以下· 当涉及Microsoft Transaction Server (MTS) components时,如果组件是作为服务器包而运行的而不是库包,那么将会有明显的性能区别。一个通常的建议是设置网络程序在它自己的内存空间中运行,然后在库包中运行MTS组件。 源代码网整理以下模拟多用户的情况 源代码网整理以下1. 在Settings面板改变Concurrent Connections。 源代码网整理以下2. 在Users创建用户,至少要创建多于你在Concurrent Connections里指定的用户数。 源代码网整理以下要改变并发用户数,点Settings图标。如果少于100个用户,你可以直接设置Stress Level,要模拟多于100个用户,你还须设置Stress Multiplier。基本公式为:用户数(线程数)= Stress Level * Stress Multiplier.如果要模拟1,000个用户,你可以设置Stress Level为100而Stress Multiplier为10。 源代码网整理以下如果你在没有设置足够的用户前尝试运行脚本,你将会得到一个警告。通过点Users图标可以修改你的用户数,你将在右边的窗口看到一个默认的Default组。双击Default组展开你的用户列表,如果你被允许匿名访问,那么你只要简单的填入新用户的代码然后点Create就可以了。 源代码网整理以下运行需要署名登录的测试 源代码网整理以下但是无论如何,需要确保这些用户拥有有效的帐号,而且他们都可以访问IIS服务器。如果你使用的是BASIC基本认证用户帐号,你可以通过在你的浏览器提交证书来测试这个帐号,在文本文件写出Request.ServerVariables("AUTH_USER")这个值将会有很大的帮助作用。我们修改后的ASP代码将看起来是这样的: 源代码网整理以下oTS.writeline("Session Id: " & Session.SessionId & chr(32) & _ 源代码网整理以下· 调整你的网站的日志文件的存储,因为这个文件将会快速的增大(见IIS文档) 源代码网整理以下· 通过设置注册表中的HKEY_LOCAL_MACHINESoftwareMicrosoftWASSessionTrace的DWORD为1,你可以以调试的方式追踪WAS的活动 源代码网整理以下· 如果你的WAS报告显示错误,务必检查Event Log,在工具外用浏览器浏览你的页面,然后检查服务器的日志:WinNTsystem32LogFilesW3SVCi 源代码网整理以下· 如果你的测试客户端机器的处理器使用率超过了%85,你也许需要添加更多的测试客户端 源代码网整理以下· 一些更有趣的话题会在WAS的文档里出现:Page Groups, Query Strings, Cookies, Web Application Stress Object Model和Active Server Page Client (这个会让你有能力通过Web远程控制测试客户端) 源代码网整理以下请注意这是个没有技术支持的工具,发送你的问题到webtool@microsoft.com。你可以在Web Application Stress Tool这个网沾上搜索一些常见的问题。你也可以对这个工具进行编程,在同样的网站上有对象模型的参考。 源代码网整理以下资源 源代码网整理以下· WebHammer。一个由ServerObjects做的用于测试网络程序和服务器的工具 源代码网整理以下· LoadRunner .一个由Mercury Interactive做的压力测试工具,可以用来预见企业级程序的系统表现和性能 源代码网整理以下· Enterprise Monitor .由MediaHouse Software公司出品,用于监视,通报和恢复你的intranet 和 internet网络 源代码网整理以下· Extreme Soft"s PerfMon。为Microsoft Transaction Server而做的工具,能从性能监视中提供直接的MTS监视。 源代码网整理以下J.D. Meier在美国东海岸出生并成长。自从留意了Greeley的建议以后,他就成为了一名开发支持工程师,专注于服务器端的组件和涉及MTS和ASP技术的Windows DNA应用。 源代码网供稿. |
