Visual Studio性能计数器,负载测试结果分析- Part III
对于一个多用户的应用程序,性能是非常重要的。性能不仅是执行的速度,它包括负载和并发方面。Visual Studio是可以用于性能测试的工具之一。Visual Studio Test版或Visual Studio 2010旗舰版为自动化测试提供了支持。
介绍
对于一个多用户的应用程序,性能是非常重要的。性能不仅是执行的速度,它包括负载和并发方面。性能测试是对以下问题的回答
- 我们如何确保我们的新的应用程序将支持预期的用户负载?
- 如何避免在实际负载条件下会出现的问题?
- 如何确定响应时间?
- 如何规划服务器的容量?
Visual Studio是可以用于性能测试的工具之一。Visual Studio Test版或Visual Studio 2010旗舰版为自动化测试提供了支持。
这将是一系列文章的第三部分。
Part I: Web测试和配置
Part II:负载测试,RIG和负载测试术语。
Part III:性能计数器,负载测试结果分析。
性能计数器
性能计数器可以是系统预定义或用户自定义的,用来衡量系统的性能。性能测试结果分析完全依赖于作为测试的一部分而捕获的性能计数器。因此,为了有更好的测试结果和更好的分析,我们首先需要了解每个服务器相关的的重要的计数器。
我们可以使用性能监视器(这篇文章中讨论的)或使用Visual Studio本身,来捕捉性能计数器。为了获取相应的服务器的计数器,在需要在Load test中把服务器添加到computer section。
添加计算机来收集性能计数器
在Load test中,右键单击Run Settings 下的 Counter Set Mappings,选择Manage Counter Sets选项。
Manage Counter Sets窗口将被打开,在这里我们可以添加计算机。添加计算机系统,并选择相应的计数器。
当负载测试执行时,我们可以在Visual Studio中观察到每个计算机系统对应的计数器。
在性能监视器中添加计数器
本文也将讨论设置性能监视器来捕获计数器。如果您使用性能监视器来捕获计数器,那么我们就需要确保在负载测试前启动计数器,并在负载测试完成后再关闭它。还需要从多台服务器合并结果并生成报告。
(译者:在Run中输入perfmon,来打开性能监视器。在性能工具->性能监视器下打开性能监视器图表,在性能监视器图表中,点击+或右键菜单来添加计数器)
重要的计数器
我们根据服务器和服务器上的应用程序来捕获对应的计数器。例如,一个数据库服务器所需的计数器和web服务器上的不同。另外,我们需要为每个服务器设置通用的计数器,如处理器利用率,内存利用率等。在本节中,我们将讨论通用计数器和应用程序服务器以及数据库服务器所需的重要的计数器。在这里,我们将讨论一些重要的计数器,但不是全部。
通用计数器
\Processor(*)\%Processor time -这个计数器衡量处理器的利用率。在所有服务器上捕捉这个计数器,并测量平均使用率。在空闲的情况下,处理器的利用率应低于80%。
\Process(*)\Private Bytes - 指示分配给该进程的内存的字节数。该计数器指示进程的内存使用率。
\Network Interface\Bytes Received/sec, \Network Interface\Bytes Sent/sec, \Network Interface\Bytes Total/sec -这三个计数器指示了服务器的网络使用率。
ASP.NET Web应用程序服务器计数器
\.Net CLR Data\ -这个计数器组包含与以下相关的计数器:连接池的数量,失败的连接尝试的数量和在应用程序服务器上运行的特定进程的连接池的数量。
(译者:.net连接池用于ADO.net和数据库连接,可以参考.NET连接池救生员一文)
\.Net CLR LocksAndThreads\ -这个计数器组包含物理和逻辑线程数和发生竞争(Contentions)的数量。
(译者:逻辑线程指托管线程;物理线程指操作系统线程;Contentions指试图获取托管锁发生的错误)
\.Net CLR Memory\ -这个计数器组包括Gen 0,Gen 1和Gen 2的垃圾回收数量和堆的大小。指示了垃圾收集率和应用程序每轮的内存管理。
\.Net Memory Cache4.0\ -这个计数器组帮助你了解应用程序的缓存实现。
\ASP.Net Applications\ -这个计数器组提供请求处理和应用管理的概览:有多少请求被处理,拒绝,排队或断开,缓存命中率和失误,错误,身份验证失败,输出缓存请求数和失败数,活跃和被丢弃的会话,提交和中止的事务。
数据库服务器计数器
\Database\ -数据库相关的计数器,如数据库高速缓存的大小,数据库I / O读取和写入,页面转换和记录转换。SQL Server特定的计数器被定义在单独的计数器组。
\SQLAgent:Jobs\ -该计数器组包含的计数器指示了SQL Server中运行的作业的状态。指示了有多少作业是是活动的,失败的,正在排队,或已成功执行。
\SQLServer:Locks\ -这个计数器指示在应用程序执行中有多少次死锁发生。
通用术语
在讨论的计数器以及如何理解它们前,我们需要研究性能测试相关的多个术语。
响应时间(Response Time)
大多数的性能测试是为了了解在给定负载情况下应用程序的响应时间。如果应用程序没有完成性能测试,那么预期的用户负载的响应时间可能不会被定义。
响应时间是指一个页面或者事务响应用户所花费的时间。8秒是一个网页标准的最大响应时间。如果页面有很多的图像或视频,它可能需要更多的时间来加载。为了更好的使用,我们可以加载页面中使用异步调用和Ajax。如果响应时间是非常高的,用户的体验将变得糟糕,对应用的使用方法也可能会影响到响应时间。减少响应时间的同时保持丰富的用户界面是一项挑战。
吞吐量(Throughput)
吞吐量是每秒由服务器处理的事务或输入的数量。这指示了服务器每次可以处理的负载或请求的数量。根据吞吐量和响应时间的要求,我们可以来规划的服务器集群。
资源利用(Resource Utilization)
资源利用包括服务器的处理器,内存和网络的利用率。应用程序对服务器资源的利用率确定了,我们是部署一台服务器,还是需要部署多台服务器。
这是三个主要的性能测试术语或者指标。除了这些衡量指标以外,我们有网络时间,等待时间,请求时间,测试组合,负载组合等指标,我们将在后面讨论。
结果分析
现在,我们有所需的计数器数据和性能数据,如响应时间和吞吐量等。对于不同场景的性能结果分析,无法在一两个文档中解释清楚。取决于我们收到的作为性能测试的结果数据,分析会有所不同。
例如,假设你得到很高的响应时间,同时具有良好的资源利用率。简单来说这意味着,高响应时间不是由于任何资源的问题引起的,它可能是由于你的SQL部分或前端代码引起。查看SQL计数器,并确定是否有特定的页面做了某些数据库调用并产生大量的读,写或占用大量CPU时间。如果是这样的话,这个问题在于数据库查询或存储过程。而后,我们缩小到数据库级别的问题,然后我们就可以使用数据库工具,如SQL Execution plan或Data engine tuning advisor,了解并解决此问题。
如果问题出在应用程序的代码上,然后我们需要研究的问题是,问题是否是由高速缓存,图像,线程,连接池的问题导致的。
结论
我们在下一篇文章中我们将使用一些示例场景来更深入讨论性能测试的结果分析。
Visual Studio性能计数器,负载测试结果分析- Part III的更多相关文章
- Visual Studio进行负载测试,RIG和负载测试术语- Part II
对于一个多用户的应用程序,性能是非常重要的.性能不仅是执行的速度,它包括负载和并发方面.Visual Studio是可以用于性能测试的工具之一.Visual Studio Test版或Visual S ...
- 使用 Visual Studio 开发、测试和部署 Azure Functions(二)测试,部署
1,引言 上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vist ...
- 使用 Visual Studio 开发、测试和部署 Azure Functions(一)开发
1,什么是Azure functions Azure Functions 是 Microsoft Azure 提供的完全托管的 PaaS 服务,用于实现无服务器体系结构. Azure Function ...
- visual studio xcopy /exclude测试
http://files.cnblogs.com/files/zfanlong1314/exclude%E6%B5%8B%E8%AF%95.zipxcopy 提供了 /EXCLUDE: 参数用于在复制 ...
- Visual Studio C++覆盖率测试异常的解决方法
默认的UnitTest可能出现这样的异常 经过查阅资料最终找到了解决办法 步骤如下: 在测试项目右键属性 将配置属性->链接器->调试 生成调试信息修改为如图所示,然后再进行覆盖率测试 就 ...
- Visual Studio 单元测试之三---压力测试
原文:Visual Studio 单元测试之三---压力测试 我们都知道大名鼎鼎的LoadRuner,但是很少有人知道Visual Studio自带的Test也可以做些简单的压力测试,下面我们就介绍一 ...
- 第五周课后作业——适用于人工智能的visual studio 的创新分析
个人觉得作业布置的(2)(3)(4)(5)的顺序并不合理,我将以(5)(2)(3)(4)的顺序开展我的分析. 创新的定义是做出一些改变或创造出新的东西,既是过程,也是结果.这是一个很泛的概念,所以去问 ...
- 转:Visual Studio进行Web性能测试- Part III
原文作者:Ambily.raj 对于一个多用户的应用程序,性能是非常重要的.性能不仅是执行的速度,它包括负载和并发方面.Visual Studio是可以用于性能测试的工具之一.Visual Studi ...
- 转:Visual Studio进行Web性能测试- Part II
原文作者:Ambily.raj 对于一个多用户的应用程序,性能是非常重要的.性能不仅是执行的速度,它包括负载和并发方面.Visual Studio是可以用于性能测试的工具之一.Visual Studi ...
随机推荐
- 探究算子find_shape_model中参数MaxOverlap的准确意思
基于形状的模板查找算子: find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxO ...
- Java方法_数组
/* 方法:完成特定功能的代码块. 注意:在很多语言里面有函数的定义,而在Java中函数被称为方法. 方法格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) { ...
- Python爬虫进阶四之PySpider的用法
审时度势 PySpider 是一个我个人认为非常方便并且功能强大的爬虫框架,支持多线程爬取.JS动态解析,提供了可操作界面.出错重试.定时爬取等等的功能,使用非常人性化. 本篇内容通过跟我做一个好玩的 ...
- Dom4j入门
一.Dom4j API生成xml文件 @Test public void bulidXmlByDom4j(){ //创建document对象 Document document = DocumentH ...
- SpringCloud之服务注册-eureka
类似于DUBBO 的zookeeper, SpringCloud本身提供一套服务注册中心--eureka 与zookeeper的区别在于 1:zookeeper本身就是一个应用,安装即可用:eurek ...
- java中double和float精度丢失问题
为什么会出现这个问题呢,就这是java和其它计算机语言都会出现的问题,下面我们分析一下为什么会出现这个问题:float和double类型主要是为了科学计算和工程计算而设计的.他们执行二进制浮点运算,这 ...
- SOA和微服务到底是什么关系?
SOA和微服务到底是什么关系? 说实话,我确实不明白SOA和微服务到底有什么本质上的区别,两者说到底都是对外提供接口的一种架构设计方式.我倒觉得微服务其实就是随着互联网的发展,复杂的平台.业务的出现, ...
- 常见gcc编译问题解决方法集
除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词):用"-Wl,-Bstatic"指定链接静态库,使用 ...
- (巴什博弈 sg函数入门1) Brave Game -- hdu -- 1846
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1846 首先来玩个游戏,引用杭电课件上的: (1) 玩家:2人:(2) 道具:23张扑克牌:(3) 规则: ...
- Spring+shiro配置JSP权限标签+角色标签+缓存
Spring+shiro,让shiro管理所有权限,特别是实现jsp页面中的权限点标签,每次打开页面需要读取数据库看权限,这样的方式对数据库压力太大,使用缓存就能极大减少数据库访问量. 下面记录下sh ...