为你的ASP程序作一个负载测试(3)
时间:2008-10-23 13:48:00
分析测试结果
你可以点工具条上的Reports图标来看产生的报告。这将产生一个与Script tab相临的新的tab。报告被存储在一个大纲视图里。首先,在你的报告下面点Result Codes,这个将给你一个快速的印象,这次测试是否出现了什么问题。如果你看到的状态代码不是200,你也许需要调查一下出现了什么问题,通常的问题包括署名和不正确的URL路径。
点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
影响性能和可测量性的因素
服务器组成,数据库访问,和其他因素会大大降低ASP的Request per Second值。不同的配置选择也会起到不同的作用,在这里我要指出几个常出现的因素:
· 如果你在访问一个数据库,你是否有做连接池?关于连接池的详细资料请看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组件。
模拟多用户的情况
我会简要的介绍如何在WAS中模拟多用户请求的情况。你需要做两件事:
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就可以了。
运行需要署名登录的测试
如果你想运行需要署名登录的页面,那么你需要创建合适的用户名和密码以便WAS在运行时可以使用。这同样是在Users设置的。你可以一开始就通过Remove All去掉当前的用户列表,然后添加你需要的用户,你也可以选择从文本文件导入用户名和密码。
但是无论如何,需要确保这些用户拥有有效的帐号,而且他们都可以访问IIS服务器。如果你使用的是BASIC基本认证用户帐号,你可以通过在你的浏览器提交证书来测试这个帐号,在文本文件写出Request.ServerVariables("AUTH_USER")这个值将会有很大的帮助作用。我们修改后的ASP代码将看起来是这样的:
oTS.writeline("Session Id: " & Session.SessionId & chr(32) & _
"Time: " & Cstr(now()) & "AUTH USER: " & chr(32) & Request.ServerVariables("AUTH_USER"))
使用WAS的技巧和提示
作为结束,我会提供一些技巧和提示,还有一些经验总结:
· 调整你的网站的日志文件的存储,因为这个文件将会快速的增大(见IIS文档)
· 通过设置注册表中的HKEY_LOCAL_MACHINE\Software\Microsoft\WAS\SessionTrace的DWORD为1,你可以以调试的方式追踪WAS的活动
· 如果你的WAS报告显示错误,务必检查Event Log,在工具外用浏览器浏览你的页面,然后检查服务器的日志:\WinNT\system32\LogFiles\W3SVCi
· 如果你的测试客户端机器的处理器使用率超过了%85,你也许需要添加更多的测试客户端
· 一些更有趣的话题会在WAS的文档里出现:Page Groups, Query Strings, Cookies, Web Application Stress Object Model和Active Server Page Client (这个会让你有能力通过Web远程控制测试客户端)
请注意这是个没有技术支持的工具,发送你的问题到webtool@microsoft.com。你可以在Web Application Stress Tool这个网沾上搜索一些常见的问题。你也可以对这个工具进行编程,在同样的网站上有对象模型的参考。
资源
要想获取更多的信息,WAS的网站上的tutorial是一个好去处。当然,请务必读一下随WAS附带的在线帮助—特别是一个叫Web stress testing overview的话题。
· WebHammer。一个由ServerObjects做的用于测试网络程序和服务器的工具
· LoadRunner .一个由Mercury Interactive做的压力测试工具,可以用来预见企业级程序的系统表现和性能
· Enterprise Monitor .由MediaHouse Software公司出品,用于监视,通报和恢复你的intranet 和 internet网络
· Extreme Soft's PerfMon。为Microsoft Transaction
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
以实例全面讲解PHP中多进程编程的相关函数的使用
python函数超时自动退出的实操方法
Go实现各类限流的方法
![](https://img.aspxhome.com/file/2023/1/133961_0s.jpg)
微信小程序开发实例详解
![](https://img.aspxhome.com/file/2023/6/131776_0s.jpg)
Python技法之如何用re模块实现简易tokenizer
Python Pandas实现DataFrame合并的图文教程
![](https://img.aspxhome.com/file/2023/5/109555_0s.png)
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
![](https://img.aspxhome.com/file/2023/3/88293_0s.jpg)
php将文件夹打包成zip文件的简单实现方法
SQL提供的进行数据传输的实用程序—BCP
走中国特色的网站重构道路
Hibernate Oracle sequence的使用技巧
javascript进行数组追加方法小结
SQL SERVER性能优化综述(很好的总结,不要错过哦)第1/3页
python处理列表的部分元素的实例详解
python递归函数用法详解
pytorch 实现情感分类问题小结
![](https://img.aspxhome.com/file/2023/5/66385_0s.png)