65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET 网站性能测试

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.60/5 (3投票s)

2010 年 12 月 2 日

CPOL

5分钟阅读

viewsIcon

65546

本文介绍如何使用 VSTS 2008 对 ASP.NET 网站进行性能测试。

引言

本文介绍如何使用 Visual Studio Team System 2008 进行性能测试。

VSTS 为任何网站的性能测试提供了负载测试代理和控制器。我创建了一个演示网站,包含登录页面和主页。登录页面使用第三方身份验证工具进行 SSO(单点登录)。我们将测试登录页面的性能以及当多个并发用户尝试登录网站时 SSO 工具在服务器上的内存消耗。

背景

我希望您了解响应时间、延迟、吞吐量、负载、负载敏感性和可伸缩性等基本术语。有关更多信息,请访问这里

还需要具备 VSTS 负载测试代理和控制器基本知识。您需要了解代理和控制器的安装和部署场景。请参阅链接了解部署场景,以及链接了解安装和其他事项。

Using the Code

我使用 VS2008 创建了一个简单的 ASP.NET 网站。它有两个页面:Login.aspxHome.aspx。当用户输入 URL 时,会显示登录页面。用户输入其凭据并提交登录页面。服务器端会验证这些凭据,并导航到主页。一个经过身份验证的用户将被导航到主页。

// Validate user
if (Membership.ValidateUser("SuperUser", "superuserPwd"))
{
     authMemory = Application["SuperUser"] as AuthInMemory;// is token already in memory 
    
     if (authMemory != null)
     {
         Session["AUTHCOMPONENT"] = authMemory.AuthComponent;

         bool hasRights = authMemory.AuthComponent.HasEntityAccess
				("LoginPage", Rights.Read);

		if(hasRights)
    	                Response.Redirect("~/public/home.aspx");
		Else	
			labelMessage.Text = "can't log-in!";
     }
}
else
{
     labelMessage.Text = "can't log-in!";
}

请记住一件事,我使用了第三方 SSO 工具进行登录。如您在上面的代码中看到的,我将身份验证组件存储在会话中。我们为此组件在服务器上占用内存,为所有已登录用户。因此,我们想在大量并发用户登录时,衡量服务器端身份验证令牌的 CLR 内存消耗以及登录页面的响应时间。

我假设您已经在本地机器或根据您的需求和部署场景的不同机器上安装了负载测试代理和控制器。您也可以为此目的使用虚拟机或 VMWare。

那么,让我们一步一步地开始我们网站的性能测试。

步骤 1:首先,我们必须为我们的网站创建 WebTest。WebTest 的目的是模拟登录场景。点击“添加新测试”。它将显示以下对话框,其中包含多种测试类型。选择 Web Test 并输入您的测试名称。它带有 .webteset 扩展名。

PT1.GIF

它将显示 Web Test Recorder。现在点击“录制”并开始录制登录步骤。

PT2.GIF

完成测试过程并停止录制。WebTest1.webtest 将包含在您的项目中。

现在,我们将对这个录制的 webtest 进行负载测试。

步骤 2:通过点击添加新测试来创建负载测试。它将显示与 WebTest 相同的对话框。选择 Load Test。它带有 .loadtest 扩展名。它将启动 Load Test Wizard 来配置我们的负载测试。

PT3.GIF

我在这里不详细介绍每一个步骤,因为这超出了本文的范围。有关更多信息,请参阅负载测试向导帮助。我已经设置了一个负载测试,包含 1000 个初始用户,并以每秒 100 个用户的速度增加负载。最大用户数为 10000。

PT4.GIF

在“测试组合”中,添加您在上一步中创建的 webtest。

PT6.GIF

最重要的是选择“计数器集”中的性能计数器。您可以根据您的需求选择计数器。我选择了以下计数器。

PT7.GIF

完成所有步骤后,完成向导。现在,右键单击“运行设置”节点,然后点击“运行测试”。它将根据您的配置开始负载测试,结果将开始出现。

PT8.GIF

PT9.GIF

您可以根据需要添加新的图表和计数器。

现在,我们想测量服务器上的内存消耗和登录页面的响应时间。我们想查看服务器上的内存消耗,是因为我们想查看内存阈值,即在哪个用户负载下服务器达到最高内存使用量,以及在哪个用户负载下服务器会因内存不足而崩溃,这样我们就可以计划向上扩展/向下扩展服务器。我们需要使用 .NET CLR 内存计数器来测量 ASP.NET 网站的内存。您可以采用以下 .NET CLR 内存计数器。

  1. 所有堆中的字节数
  2. 第 0 代集合数
  3. 第 1 代集合数
  4. 第 2 代集合数
  5. 第 0 代堆大小
  6. 第 1 代堆大小
  7. 第 2 代堆大小
  8. 大对象堆大小

您也可以在不同的图表中添加“可用 MB”和“用户负载”,以确保您的 .NET CLR 内存消耗与不断增加的用户负载下的整体可用内存保持一致。有关每个计数器的详细信息,请在此处查看

现在,要衡量登录页面的性能,我们可以选择“平均响应时间”和“页面响应时间”。平均响应时间显示 web 请求的响应时间,而页面响应时间包括加载所有依赖请求的时间,如图像和样式表加载等,这些都包含在网页中。

因此,平均响应时间更像是服务器上的处理时间和延迟时间。页面响应时间包含所有内容。这就是我向您解释的简单性能测试。然而,还有许多需要考虑的细节测试,例如缓存内存、内存泄漏等。

注释

在选择性能计数器时,您需要非常小心。在选择计数器时,您必须选择正确的实例。不要选择“_Global_”实例,因为它不会显示正确的结果。您必须选择您应用程序的实例。

历史

  • 2010 年 12 月 2 日:首次发布
© . All rights reserved.