Visual Studio进行Web性能测试- Part III

原文作者:Ambily.raj

对于一个多用户的应用程序,性能是非常重要的。性能不仅是执行的速度,它包括负载和并发方面。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,了解并解决此问题。

如果问题出在应用程序的代码上,然后我们需要研究的问题是,问题是否是由高速缓存,图像,线程,连接池的问题导致的。

结论

我们在下一篇文章中我们将使用一些示例场景来更深入讨论性能测试的结果分析。

本文由知平软件刘斌华翻译,转载请注明出处。原文地址:http://www.dotnetfunda.com/articles/article1563-web-performance-test-using-visual-studio-part-iii.aspx

知平软件致力于移动平台自动化测试技术的研究,我们希望通过向社区贡献知识和开源项目,来促进行业和自身的发展。

Visual Studio进行Web性能测试- Part III的更多相关文章

  1. 转:Visual Studio进行Web性能测试- Part III

    原文作者:Ambily.raj 对于一个多用户的应用程序,性能是非常重要的.性能不仅是执行的速度,它包括负载和并发方面.Visual Studio是可以用于性能测试的工具之一.Visual Studi ...

  2. Visual Studio进行Web性能测试- Part II

    Visual Studio进行Web性能测试- Part II 2012-08-31 14:34 by 知平软件, 7557 阅读, 5 评论, 收藏, 编辑 原文作者:Ambily.raj 对于一个 ...

  3. Visual Studio进行Web性能测试- Part I

    Visual Studio进行Web性能测试- Part I 2012-08-29 08:01 by 知平软件, 5356 阅读, 9 评论, 收藏, 编辑 原文作者:Ambily.raj Visua ...

  4. 转:Visual Studio进行Web性能测试- Part I

    原文作者:Ambily.raj Visual Studio是可以用于性能测试的工具之一.Visual Studio Test版或Visual Studio 2010旗舰版为自动化测试提供了支持.本文介 ...

  5. 转:Visual Studio进行Web性能测试- Part II

    原文作者:Ambily.raj 对于一个多用户的应用程序,性能是非常重要的.性能不仅是执行的速度,它包括负载和并发方面.Visual Studio是可以用于性能测试的工具之一.Visual Studi ...

  6. Visual Studio的Web Performance Test提取规则详解(1)

    总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...

  7. Visual Studio的Web Performance Test提取规则详解(3)

    总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...

  8. Visual Studio的Web Performance Test提取规则详解(2)

    总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...

  9. Visual Studio 2013 Web开发

    cnbeta新闻:微软正式发布Visual Studio 2013 RTM版,微软还发布了Visual Studio 2013的最终版本..NET 4.5.1以及Team Foundation Ser ...

随机推荐

  1. pip软件包安装 + Anaconda软件库安装 教程

    PIP软件包安装(适用于Ubuntu和Windows10): 下载pip的安装包,官网链接如下:https://pypi.python.org/pypi/pip 我选择了Source源的安装方式,单击 ...

  2. burpsuite https证书设置

    java更新.burpsuite换来换去,chrome的证书似乎失效了.重新来一边证书导入,有一些导入方法确实坑. 尝试了直接导入到受信任的机构是无效的. 两年前就因为导入到受信任的机构,又找不到导入 ...

  3. Django 学习第九天——请求与响应

    一.HttpRequest 对象: 服务器接收到http协议的请求后,会根据报文创建 HttpRequest 对象视图函数的第一个参数是HttpRequest 对象再django.http 模块中定义 ...

  4. MVC面试问题与答案

    读这篇文章不意味着你一定要去并且能搞定MVC面试.这篇文章的目的是在面试之前让你快速复习MVC知识.这篇文章也不是MVC培训课程. 如果你想学习MVC,从这儿开始 Learn MVC ( Model ...

  5. 利用shell脚本实现nginx 的logs日志分割

    Nginx 是一个非常轻量的 Web 服务器,体积小.性能高.速度快等诸多优点.但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量 ...

  6. Adams输出宏代码

    for variable_name=loopobj object_names=.amachinery.* type=macro var set var=filename1 str=(eval(STR_ ...

  7. BZOJ.4910.[SDOI2017]苹果树(树形依赖背包 DP 单调队列)

    BZOJ 洛谷 \(shadowice\)已经把他的思路说的很清楚了,可以先看一下会更好理解? 这篇主要是对\(Claris\)题解的简单说明.与\(shadowice\)的做法还是有差异的(比如并没 ...

  8. 洛谷P1309 瑞士轮(归并排序)

    To 洛谷.1309 瑞士轮 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平, ...

  9. BZOJ.3551.[ONTAK2010]Peaks加强版(Kruskal重构树 主席树)

    题目链接 \(Description\) 有n个座山,其高度为hi.有m条带权双向边连接某些山.多次询问,每次询问从v出发 只经过边权<=x的边 所能到达的山中,第K高的是多少. 强制在线. \ ...

  10. CodeForce VKcup C 树形dp

    题意: 给出一棵树,一个人可以在树上跳,每次最多跳k(1≤k≤5)个点定义f(s,t)为从顶点ss跳到顶点tt最少需要跳多少次求∑(s<t)f(s,t) 链接: 点我 dp[i][j]表示以i点 ...