The primary goal of a load test is to simulate many users accessing a web application at the same time. The load test simulates multiple users opening simultaneous connections to the application and making multiple requests against an application or directly against a data repository such as SQL Azure. You can run a load test with a constant load pattern or an ever increasing load in order to determine the point at which response times become unacceptable or the application begins to generate errors. For example, one of the uses of a load test is to help determine if there is a point at which the application fails entirely. Because your goal is discovery of actual capacity rather than confirmation of a particular load level, you want to exceed the anticipated peak by a healthy margin. For example, you may have 1000 concurrent users during normal usage; but, you want to determine if you can handle anticipated growth to 2000 users. You can create a test that will ramp gradually to a peak of 3000 concurrent or more users. When the test is complete, you will know if tuning or enhancements are required to reliably handle potential peak loads plus a safety margin. Issues that can eventually come out as the result of load testing may include load balancing problems and processing capacity of the existing system.

A load test allows you to:

  • Quantify risk: You can determine, through load testing, the likelihood that system performance will meet the stated performance expectations and service level agreement, such as response time requirements under given levels of load. This is a traditional Quality Assurance (QA) type test. Load testing does not mitigate risk directly, but through identification and quantification of risk and potential bottlenecks, presents tuning opportunities and an impetus for remediation that will mitigate risk.
  • Determine minimum configuration: You can conduct a capacity planning and determine, through load testing, the minimum configuration that will allow the system to meet performance expectations so that extraneous compute instances and storage can be minimized. This is a Business Technology Optimization (BTO) type test.

Windows Azure provides value to your application in its ability to handle an elastic work load. To do so effectively you must know if your application is designed to scale effectively. The same elasticity that allows you to scale your cloud application enables to leverage Windows Azure to conduct load testing by:

  • Running the test agents as Windows Azure role instances or virtual machines which allows you to quickly create more of them and, thus, generate as much load as is necessary.
  • Allowing you to only deploy your test rig and its associated agents only when it needed. You only pay for the resources when you actually deploy the test rig and use the system.

You can build your test rig using custom code or a variety of third party tools. Combining Windows Azure and Visual Studio Ultimate, you can build a large, distributed test rig in a fast and automated way. Virtualization of computing resources eliminates the need for dedicated hardware for load testing. Different approaches and topologies can be used to provision a load test rig in Windows Azure.

Load tests are simulated with using a test controller and a set of test agents which are part of the load simulation architecture

The basic method is to create one "controller" and one or more "agents." You have one controller, but as many agents as you require. You can scale out the load by adding additional agents, depending on the amount of load you are required to generate. Each agent generates a part of the load. The controller agents and records the results of the test. The recommended approach when running load that simulates realistic loads typically requires at least two computers: the first runs the controller, and the second runs the agent or agents. You also need a results repository, which could be hosted on same computer as controller, or on a different computer. A different computer is usually recommended for the repository.

The advantages of adopting a load test harness hosted in Windows Azure are multiple:

  • Entry Cost: The cost of doing load tests decreases greatly after the initial investment. Once deployed, the cost of the test rig depends on Windows Azure Pay-As-You-Go pricing model.
  • Maintenance Cost: you can create an easily maintain a test harness in Windows Azure.
  • Elasticity: The load test can be easily modified to accommodate different scenarios and conditions. For example, you can configure the Azure hosted test rig with a larger number of test agents.
  • Repeatability: After the initial investment, you can use the same artifacts (VS cloud project or VM images) to deploy a new test rig in Windows Azure, run a load test for the necessary time and undeploy it.

With Windows Azure, you can host the controller and agent processes in different worker role instances.

The major components are:

  • Agents: Using worker roles you take advantage of the elastic nature of Windows Azure compute instances to scale out the agents and generate the required load more easily.
  • Controller: The controller must communicate with the different agents in the rig. It starts and stops the tests in the different agents, tracks agent status and collects test results. It also collects performance data from the agents and the system being tested. You can use either a worker role or an on on-premise computer that communicates with the worker roles using Windows Azure Connect. For information on determining which configuration works best, see Running Load Tests In Mixed Environments.
  • Windows Azure Connect: The Windows Azure Connect endpoint software must be active on all Azure instances and on the Controller machine as well. This allows IP connectivity between them and, given that the firewall is properly configured, allows the Controller to send workloads to the agents. In parallel, and using the LAN, the Controller will collect the performance data on the stressed systems, using the traditional WMI mechanisms.

The following diagram shows how applying the Windows Azure features to the test rig facilitates your implementation.

For a reference implementation of this architecture, see Using Visual Studio Load Tests in Windows Azure Roles by Paolo Salvatori and Sidney Higa which contains:

  • Visual Studio Load Test in Windows Azure Overview Describes the benefits of using Visual Studio Load Test and outlines the required steps.
  • Windows Azure Load Test Prerequisites and Setup Lists the requirements for the solution.
  • Provisioning Windows Azure For a Load Test Detailed instructions on how to set up the load test application before publishing.
  • Publishing the Load Test To Windows Azure Describes the steps for publishing a Load Test to Azure.
  • Running Load Tests In Mixed Environments A mixed environment is one in which the components of a load test (test controller, agents, results repository, and tested system) reside in different environments, such as on-premises and in Windows Azure. This document explains how you can proceed to configure such a scenario.
  • Performance Counters in Load Tests on Windows Azure Collect performance counters from an application running in a separate hosted service

[Windows Azure] Load Testing in Windows Azure的更多相关文章

  1. 转 如何使用Windows Media Load Simulator进行Windows Media服务器性能测试和监控

    Windows Media Load Simulator(WMLS)有两个主要的用途:作为极值或者压力测试工具和在线监视器.   1   极值和压力压力测试:你能够在达到期望的极值压力条件下测试离线的 ...

  2. 使用Python SDK管理Azure Load Balancer

    概述 下面将演示如何使用Python SDK管理中国区Azure Load balancer.关于Azure负载均衡器的详细功能介绍,请参考官方文档. Code Sample import os fr ...

  3. Windows Azure HandBook (4) 分析Windows Azure如何处理Session

    <Windows Azure Platform 系列文章目录> 本文是对笔者之前的文章Windows Azure Cloud Service (13) 多个VM Instance场景下如何 ...

  4. Windows Azure Cloud Service (42) 使用Azure In-Role Cache缓存(1)Co-located Role

    <Windows Azure Platform 系列文章目录> Update 2016-01-12 https://azure.microsoft.com/zh-cn/documentat ...

  5. [Windows Azure] Enabling Diagnostics in Windows Azure

    Enabling Diagnostics in Windows Azure Windows Azure Diagnostics enables you to collect diagnostic da ...

  6. Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob

    <Windows Azure Platform 系列文章目录> 请读者在参考本文之前,预习相关背景知识:Windows Azure Storage (1) Windows Azure St ...

  7. Windows Azure HandBook (3) 浅谈Azure安全性

    <Windows Azure Platform 系列文章目录> 2015年3月5日-6日,参加了上海的Azure University活动.作为桌长与微软合作伙伴交流了Azure相关的技术 ...

  8. Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR

    <Windows Azure Platform 系列文章目录> 我们知道,Azure Web Site (改名为Azure Web App)默认是可以保留Session的.Azure We ...

  9. Windows Azure Cloud Service (43) 使用Azure In-Role Cache缓存(2)Dedicated Role

    <Windows Azure Platform 系列文章目录> Update 2016-01-12 https://azure.microsoft.com/zh-cn/documentat ...

随机推荐

  1. Uploadify in ASP.Net

    和分页类似,文件上传是web开发标配的技能之一.下面介绍Uploadify的配置和使用. 一.配置 首先到Uploadify官网下载,然后在项目中添加相应引用.前台代码如下: 1.jquery.js2 ...

  2. 【MySQL】局域网内:在一台电脑访问另一台电脑的mysql数据库

    1. 假设192.168.1.3为服务器2. 首先在ip为192.168.1.103的机子上能够ping 通运行->cmd>ping 192.168.1.3检查是否能ping通3. 把两台 ...

  3. Linux-TCP之深入浅出send和recv

    内容摘自:TCP之深入浅出send和recv.再次深入理解TCP网络编程中的send和recv 建议阅读时参考:Unix环境高级编程-TCP.UDP缓冲区 概念 先明确一个概念:每个TCP socke ...

  4. 使用Thrift让Python为Java提供服务

    Thrift是基于TCP的,谷歌的GRPC是基于HTTP的.Thrift和GRPC都是比直接写个web接口进行调用更完美的方式,最明显的一点就是:我们可以定义结构体,避免了手动解析的过程. 但是,在将 ...

  5. HanLP自定义词典注意事项

    对于词典,直接加载文本会很慢,所以HanLP对于文本文件做了一些预处理,生成了后缀名为.txt.bin的二进制文件. 这些二进制文件相当于缓存,避免了每次加载去读取多个文件. 通过这种txt和bin结 ...

  6. mount 需要同时设置 noatime 和 nodiratime 吗?

    相信对性能.优化这些关键字有兴趣的朋友都知道在 Linux 下面挂载文件系统的时候设置 noatime 可以显著提高文件系统的性能.默认情况下,Linux ext2/ext3 文件系统在文件被访问.创 ...

  7. 微信小程序-携带参数的二维码条形码生成

    demo文件目录 index.js文件 //index.js var wxbarcode = require('../../utils/index.js'); Page({ data: { code: ...

  8. 【Spring】SpringMVC中浅析数据的传递方式

    包括了基本数据类型的传递和 Date数据类型的传递.关于SpringMVC的配置可以参见基于注解实现SpringMVC+MySQL 假设有表单页面如下: <h1>登录</h1> ...

  9. 新建MVC3 编译出现 System.Web.Mvc.ModelClientValidationRule

    我在vs2010 新建一个Mvc3项目,编译报一下错误: 错误 1 'c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v2.0\A ...

  10. MySQL-通用查询日志

    记录了所有对mysql数据库服务器请求的信息,无论这些请求是否得到了正确的执行.   mysqld向通用查询日志中写信息是按照收到客户端的命令的顺序进行记录,而不是按照执行的顺序.   server重 ...