IIS 7.0 Performance: Adding Processing Power vs. Load Balancing White Paper Published: February 2009 For the latest information, please visit www.iis.net. Contents Overview .....................................................................................................................................1 Benchmarking a Web Server ..................................................................................................2 Benchmarking IIS 7.0 – Various Scenarios ..................................................................................3 Test Scenario ..........................................................................................................................3 Baseline Test...........................................................................................................................3 Using Web Capacity Analysis Tool (WCAT) ............................................................................4 Web Stress Test ......................................................................................................................8 Test 1 – Scaling Up the Baseline Environment .................................................................... 15 Test 2 – Scaling Out the Baseline Environment .................................................................. 20 Notes and Assumptions....................................................................................................... 26 Conclusion ............................................................................................................................... 27 Overview This white paper illustrates two IIS 7.0 benchmarking scenarios and details the steps to monitor and fine-tune IIS 7.0 for improved performance and scalability. The following scenario is assumed: Web server administrators of a certain Web hosting company are preparing to launch a large-scale Windows-based hosting platform to handle the exceeding and diverse needs of their clients; the code for the Web application and Web site hosted on the new platform has already been or will be tested by the clients; and, performance and scalability statistics of the Web sites under IIS 7.0 in different loads has yet to be identified. Three tests are described in this paper. 1. Baseline test: This provides the baseline architecture for further tests that demonstrate the performance of scaled environments. The baseline test gathers performance statistics on a baseline architecture comprised of a single 2.4 GHz machine with 8 GB RAM, which was exhausted when 600 requests/second were applied. 2. Test 1 – Adding Processing Power: The first scaling test is performed by scaling up the baseline architecture to a server machine with increased processing power (3 GHz processor) and memory (16 GB RAM). The processing resources of this environment were exhausted when approximately 6500 requests/second were applied. 3. Test 2 – Load Balancing: The second scaling test is performed by scaling out the baseline architecture on a distributed architecture having one machine with a 2.4 GHz processor and 8 GB RAM, and a second machine with 3 GHz processor and 16 GB RAM. The processing resources of this environment were exhausted when 40,000 requests/second were applied. These tests will assist hosting administrators in locating performance and scalability bottlenecks within their hosting environments. By using the Microsoft Web Capacity Analysis Tool (WCAT) in a test environment to simulate the server load that can be expected in a production environment, the potential bottlenecks that may undermine the end user experience are pinpointed. Thoroughly studying this demonstration and applying different scenarios within their own environments will assist administrators in planning installation capacities and rectifying bottlenecks and other hardware level issues. In hosting environments, the Web application or Web site code is normally the responsibility of the client, and IIS 7.0 takes every possible measure to isolate different Web applications where possible. This helps in identifying “bad” Web sites and Web applications and keeping them away from “good” Web sites. This paper used WCAT to stress-test the site and gather performance and scalability metrics. IIS 7.0: Adding Processing Power vs. Load Balancing 1 Benchmarking a Web Server In simple words, benchmarking a Web server is the process of gauging its ability to maintain a site's availability, reliability, and performance as the amount of simultaneous Web traffic, or load, hitting the Web server increases. The two important factors that affect Web site scalability are performance and load management. Performance Performance refers to how efficiently a site responds to browser requests based on defined benchmarks. Performance of a certain application is affected by different complex factors, including application design and construction, database connectivity, network capacity and bandwidth, and hardware server resources such as processor, RAM, and storage. Application performance within a certain environment can be measured, designed, and tuned for optimal results. Load Management Load management is the method by which simultaneous user requests are distributed and balanced among multiple servers, such as Web, ColdFusion, DBMS, file, and search servers. Effectively balancing load across servers ensures the smooth and continuous availability of services to users. Load management may be achieved through several different methods: Hardware-based load management; Software-based load management, including round-robin Internet DNS or third-party clustering packages; Hardware and software combinations. IIS 7.0: Adding Processing Power vs. Load Balancing 2 Benchmarking IIS 7.0 – Various Scenarios Test Scenario Targeted for administrators of a large hosting company who are preparing to serve their hosting clients with a mix of static Web sites and dynamic ASP.NET applications, this paper assumes a single ASP.NET application called Time Management System (TMS), backed by an SQL Server 2005 database. TMS is a simple, online task management system application with: 68 static pages 9 C# code files 27 ASP.NET applications Two tables in the database, each with a high number of records Baseline Test The test environment demonstrates how the ASP.NET Web application scales on a server with single 2 GHz processors running IIS 7.0. The goal is to stress the site to determine the number of requests per second that the deployment processed at, or nearly at, 100% CPU utilization. This section provides an analysis of how the site is expected to scale under a heavy load by understanding the application’s performance when the CPU is exhausted, and guides administrators in planning deployment capacity based on traffic estimates. This first test serves as a baseline for further tests that demonstrate the benchmarks in scaled architecture. The following two tables describe the software and hardware used for the demonstration. Table 1: Software Specifications Type Specification Operating system Windows Server 2008 Web server Default installation of IIS 7.0 Language support ASP.NET (.NET framework 3.0) Web application TMS – Time Management System Database SQL Server 2005 Table 2: Hardware Specifications Type Specification Processor Dual 2.4-GHz Core 2 Duo Intel Pentium 4 Processors RAM 4 GB IIS 7.0: Adding Processing Power vs. Load Balancing 3 Type Specification Router/Switch Netgear Wireless Router Processor Four 3-GHz Intel Pentium 4 Processors RAM 16 GB Router/Switch 3COM 10/100 Using Web Capacity Analysis Tool (WCAT) Web Capacity Analysis Tool (WCAT) is a lightweight HTTP load generation tool primarily designed to measure the performance of a Web server within a controlled environment. WCAT can simulate thousands of concurrent users making requests to a single Web site or to multiple Web sites. This section discusses the three main components of WCAT and their basic usage. WCAT Client Management Utility – wcat.wsf wcat.wsf is a utility script for managing a WCAT test environment. Table 3 lists the five main actions of this utility. Table 3: WCAT Client Options # Name Switch Description 1 Set clients -setclients Sets the default list of clients to use for test. 2 Terminate clients -terminate Terminates all instances of WCAT client on all client machines. 3 Update clients -update Update WCAT client software and extension DLLs on all client machines; the first time forces the client to reboot. 4 Show clients -showclients Displays the list of clients to be used by wscat.wsf. 5 Run clients -run Runs WCAT client software on all client machines and then starts WCAT controller software locally. WCAT Controller – wcctl.exe The WCAT controller software is contained in a single binary, wcctl.exe, which coordinates the beginning and end of the test among all client machines. It also aggregates the data gathered from all clients into a single report and queries the Web server directly for performance counter data. Table 4 lists the five options of WCAT controller. Table 4: Main Options Supported by WCAT Controller # Name Switch Description 1 Client file -clientfile, -t The scenario file to use for the test to be run. IIS 7.0: Adding Processing Power vs. Load Balancing 4 2 Settings file -settingsfile, -f The settings file to use. 3 Server -server, -s A comma-separated list of Web servers or IP addresses to generate load against; the list must contain no spaces (example: “web1,web2,web3” not “web1, web2, web3”). 4 Duration -duration, -u The duration in seconds that WCAT should run AFTER the warmup phase; WCAT samples data during the duration phase. 5 Extended Information -extended, -x Specify this flag to enable extended information collection, including performance counters, registry value collection, and other miscellaneous server information, such as number of processors, CPU speed, total memory, etc. WCAT uses two primary configuration files to describe how to generate load. Settings File The settings file describes the configuration specific to a particular test environment. Environment-specific settings are placed in the settings file, such as number of machines, number of virtual clients, Web server name, etc. The settings file is also referred to as the controller file because it is used primarily by the WCAT controller. settings { clientfile = “home.ubr”; server = “192.168.1.10”; clients = 2; virtualclients = 20; counters {…} registry {…} } Sample Settings File Scenario File The scenario file is primarily utilized by the WCAT client process and is sometimes referred to as the client file. It describes the mix of URLs to request, how often to request them, the extension DLLs to load, etc. scenario { transaction { id = "foo"; IIS 7.0: Adding Processing Power vs. Load Balancing 5 weight = 1000; request { url = "/foo1.htm"; } request { url = "/foo2.htm"; } } transaction { id = "bar"; weight = 2000; request { url = "/bar.htm"; } } } Sample Scenario File WCAT Client – wcclient.exe wcclient.exe is the utility that serves as the client end of WCAT’s client–server architecture. wcclient.exe is copied to each physical client machine and is controlled through the WCAT controller. The basic function of WCAT client is to connect to the running WCAT controller and accept the testing parameters, such as number of virtual clients, server address, etc. To run the WCAT client, wcclient.exe accepts the WCAT controller IP address as input. IIS 7.0: Adding Processing Power vs. Load Balancing 6 WCAT Controller Waiting for Client Connections WCAT Client Connected to the WCAT Controller WCAT Demo Commands The WCAT commands as used within the test, with slight modification of figures, are as follows. Setting the client list wcat.wsf -terminate –update –clients 192.168.1.1,192.168.1.2 Running WCAT controller wcctl.exe -t home.ubr -f settings.ubr -x -l This command signifies that all of the settings have already been saved in the scenario and settings file. Batch files To avoid typing the above commands repeatedly, creating one or more batch files for the easy execution of commands is recommended. To do this, open Notepad by clicking Start, then click Run, and type “Note” and press Enter. Type any of the above commands into Notepad and save the file as filename.bat. Double-click the newly created batch file to execute it. The new command window will launch and display the execution of commands until the process completes, and will close automatically upon completion. The batch file can be run from within the command window by simply browsing through the directory of batch files and typing its name. WCAT Controller Batch File Nine Steps to Running WCAT 1. Start the Web server. 2. Prepare the controller input files. 3. Start the WCAT controller. IIS 7.0: Adding Processing Power vs. Load Balancing 7 4. Start the WCAT clients. 5. The warm-up period. 6. The test period. 7. The cool-down period. 8. The reporting period. 9. Prepare the output files. Web Stress Test The following section discusses WCAT settings and the process of exhausting Web server resources. Test Preparation The WCAT configuration file was set up to run 90 virtual users on three physical client machines (each running 30 threads). The WCAT distribution file was set up to imitate realworld use of the Web application. Table 5 shows the breakdown of the WCAT distribution file based on the assumptions. Table 5: WCAT Distribution File Description Request # Percentage of Request Description Requests 1 50 Users browse the tasks list. The highest percentage of requests is assigned to this action based on the expectation of the highest percentage of real-world traffic to the Web application. 2 30 User uses the pagination option to browse through records beyond the first page. These requests are assumed to have the second highest share among the total requests and have a different level of impact on the server because of different database queries. 3 20 User searches for a task. These requests are relatively low in number but put more stress on the server by searching within a large number of records. Test Configuration Files WCAT settings file Based on the environment, the required variables in the settings file were set as follows: Name of the “scenario file” to be used clientfile = "home.ubr"; IP address of the server to be tested server = "192.168.1.10"; IIS 7.0: Adding Processing Power vs. Load Balancing 8 Number of physical machines clients = 3; Number of virtual users per physical machine totaling 90 virtual users virtualclients = 30; Interval defined within the counter{..} section to set the interval at which the WCAT controller polls the results from WCAT clients interval = 10 Processor activity counter to be logged counter = "Processor(_Total)\\% Processor Time"; WCAT scenario file Based on the environment, the require variables in the scenario file were set as follows: Warm up duration during which WCAT sends but does not log the requests warmup = 180 Duration of test duration = 360 Cool-down duration cooldown = 60 Three transaction variables set as follows Transaction 1 Transaction unique ID id = "helloworld" Transaction priority to signify the frequency that this request is made compared with other requests weight = 100 Transaction 2 Transaction unique ID id = "helloworld1" Transaction priority to signify the frequency that this request is made compared with other requests weight = 60 Transaction 3 Transaction unique ID id = "helloworld2" Transaction priority to signify the frequency that this request is made compared with other requests weight = 30 IIS 7.0: Adding Processing Power vs. Load Balancing 9 Common variables with the same values for all three transactions Authentication type with appropriate credentials authentication = NTLM username = "Administrator" password = "xxxxxxxx" Emulating User Load to the Web Site The following image illustrates the test environment’s network diagram, which comprises: One Windows Server 2008 with IIS 7.0 and SQL Server 2005; One WCAT controller server running on a Windows 2003 machine; Three WCAT client machines running Windows XP and each configured to simulate the load of 30 users. Test 1 Network Diagram Duration The first test was run for 10 minutes. This was a sufficient length of time because the test was intended only to identify the bottlenecks and performance issues in the server software, not in the hardware, and was also not intended to detect bugs or issues with the Web application. Network Status During the test, the network was monitored continuously to ensure that the connection, with a capacity of 1 GB, was not saturated. On the Networking tab in Windows Task Manager, network traffic remained steady at 7% and sometimes moved even slower, proving that the network was not a bottleneck. IIS 7.0: Adding Processing Power vs. Load Balancing 10 Processor Status We then opened System Monitor and monitored the Processor(_Total)\% Processor Time counter. The counter showed that the CPU was saturated at 100%. The graph shows a steady horizontal line at the top vertical limit of processor usage percentage. The test was run several more times with fewer virtual users, at 35, 45, 55, 65, and 75. The CPU did not always reach 100% saturation, and dropped from the top mark significantly. We found that 90 virtual users was the exact mark at which the CPU reached 100% utilization. Anything below this did not allow the CPU to reach the 100% mark; similarly, anything above this was irrelevant. The test concluded that the data reflecting a run of 90 virtual users suited capacity planning needs. Since the test was run in an isolated environment to obtain the appropriate results, the WCAT logs revealed no errors. This led to the conclusion that the bottleneck was the CPU. The server installation could not scale beyond the 90 virtual users because the server did not have sufficient processing power. Processor Usage with Virtual Users Less Than 90 IIS 7.0: Adding Processing Power vs. Load Balancing 11 Processor Usage Rose to 100% Utilization with 90 Virtual Users Processor Usage Down to Nearly 0% at the End of the Test IIS 7.0: Adding Processing Power vs. Load Balancing 12 Other Performance Counters If the initial attempt to saturate the CPU had failed, that would have indicated that the bottleneck was elsewhere in the installation, such as at disk I/O or database activity. In the test case, the disk I/O graph remained at an acceptable level. Also, a badly written application can be the source of a bottleneck in cases in which the CPU is not saturated during stress testing. A badly written application normally adversely affects the three performance counters—processor, memory, and disk I/O. However, IIS 7.0 architecture executes code in such a way that the possibility that one bad application will affect other applications within the same environment is nearly eliminated. Analysis of the Test Table 6: Web Stress Test Analysis Calculation Equation Result WCAT requests per second From WCAT logs 596 Processor megacycles per second 2 2458 (Dual 2.4 GHz) 4,916 Processor cycles per second 4916 1000 1000 4,916,000,000 Processor cycles per request 4916000000/596 8,248,322 (~8.3 million) Requests per day Assuming 10 million 10,000,000 Requests per second 10000000/60/60/24 116 (~120) Processor utilization per second 8.3 MHz 120 996 MHz Average processor utilization percentage (996/4916) 100 20% Note The requests per day figure assumed above specifically means, “Let’s suppose the Web server is expecting five million requests per day. Calculate whether it can handle this number of requests. If it can, then what would processor utilization be?” We calculated the throughput of the server at 100% utilization but a server should not run at 100% utilization all the time. Therefore, the calculation of server throughput at certain acceptable processor utilizations, such as 30%, is required. Test Reports This section contains snippets of reports generated by WCAT. IIS 7.0: Adding Processing Power vs. Load Balancing 13 Test Report Summary Processor Utilization Summary (Partial) Conclusion of the Test The calculation within the analysis section shows that the current server deployment for the Web application can handle 10 million requests per day without exceeding 25% CPU utilization at any given time of day. The 10 million figure was initially assumed in the calculation of server throughput at certain acceptable processor utilization levels, i.e., from 15% to 40%. Therefore, this deployment of IIS 7.0: Adding Processing Power vs. Load Balancing 14 hosting servers can easily support any hosting environment and between 10 million to 13 million requests per day, or 600 to 625 requests per second. Test 1 – Scaling Up the Baseline Environment This section discusses the outputs of the tests done after deploying the application on a server machine with nearly four times the processing speed of the first machine installed on the standard server motherboard. Definition Scaling up means increasing the processing capabilities of a server by adding hardware units such as processors, RAM, and faster I/O disks. This is normally done to increase the number of sites and Web applications that a server can host or to enable the Web server to support a higher number of requests. Benefits Scaling up is an inexpensive way to boost performance, especially if the majority—if not all— of the Web sites hosted on a server contains static content. Test Preparation This time, we set up the WCAT configuration file to run 1200 virtual users on four physical client machines, each running 300 threads. The WCAT distribution file was set up to imitate real-world use of the Web application. Test hardware Server machine with: Quad 3 GHz Pentium 4 Processors 16 GB RAM Four client machines with: 1.3 GHz Pentium 4 Processors 1 GB RAM Test configuration files For the second test, the Web application along with the database was transferred from the server utilized in the first test to the new server, which had increased processing power and memory. After migrating the application, the WCAT stress test was performed with the following configuration. Based on the environment, the required variables in the WCAT settings file were set as follows: IIS 7.0: Adding Processing Power vs. Load Balancing 15 Name of the “scenario file” to be used clientfile = "home.ubr"; IP address of the server to be tested server = "192.168.1.10"; Number of physical machines clients = 4; Number of virtual users per physical machine, for a total of 1200 virtual users virtualclients = 300; Interval defined within the counter{..} section to set the interval at which WCAT controller will poll the results from WCAT clients interval = 10 Processor activity counter to be logged counter = "Processor(_Total)\\% Processor Time"; Based on the environment, the required variables in the WCAT scenario file was set as follows: Warm up duration during which WCAT sends but does not log the requests warmup = 180 Duration of test duration = 360 Cool down duration cooldown = 60 Three transactions set as follows Transaction 1 Transaction unique ID id = "helloworld" Priority of the transaction to signify the frequency at which this request is made compared with other requests weight = 100 Transaction 2 Transaction unique ID id = "helloworld1" Priority of the transaction to signify the frequency at which this request is made compared with other requests weight = 60 Transaction 3 IIS 7.0: Adding Processing Power vs. Load Balancing 16 Transaction unique ID id = "helloworld2" Priority of the transaction to signify the frequency at which this request is made compared with other requests weight = 30 Common variables with the same values for all three transactions Authentication type with appropriate credentials authentication = NTLM username = "Administrator" password = "xxxxxxxx" Emulating User Load to the Web Site The following figure shows the network diagram of the test environment, which comprises: One Windows Server 2008 with IIS 7.0 and SQL Server 2005; One WCAT controller server running on a Windows 2003 machine; Four WCAT client machines running Windows XP and each configured to simulate the load of 300 users. Test 2 Network Diagram IIS 7.0: Adding Processing Power vs. Load Balancing 17 The Test The test was started by simulating the load of double the number of virtual users of the first test, or 180 (90 2). Then, to raise the CPU utilization to 100%, several tests were performed using 360, 700, 1000, 1100, and 1200 virtual users. CPU utilization rose to a constant 100 percent with a load of 1200 users. The network status of the client machines was checked from the Task Manager, and was at an acceptable level, fluctuating at around 7%. The network status on the server machine showed that the network hovered around 19%. Since the server’s processing power was successfully exhausted, the processor was once again the bottleneck. However, this time the server was able to handle many more requests per second than the previous server configuration. Table 7: Scaling Up Test Analysis Calculation Equation Result WCAT requests per second From WCAT logs 6307 Processor megacycles per second 4 3072 (Four 3 GHz) 12,288 Processor cycles per second 12288 1000 1000 12,288,000,000 Processor cycles per request 12288000000/6307 1,948,311 (~2 million) Requests per day Assuming 75 million 75,000,000 Requests per second 60000000/60/60/24 868 (~870) Processor utilization per second 2 MHz 870 1740 MHz Average processor utilization percentage (1740/12288) 100 15% IIS 7.0: Adding Processing Power vs. Load Balancing 18 Test Reports This section contains snippets of reports generated by WCAT. Test Report Summary Processor Utilization Summary (Partial) Scaling Up Conclusion Calculations in the “Analysis Section” show the following: IIS 7.0: Adding Processing Power vs. Load Balancing 19 The server with two 2.4 GHz processors and 4 GB RAM performed 596 requests/second; The server with four 3 GHz processors and 16 GB RAM performed 6307 requests/second. When moving from a single 2 GHz processor to four 3 GHz processors, the test deployment scaled at a ratio of: [(6307/12288) / (596/4916)] 100 = 1 to 4.2 The above test for scaling up the hosting environment shows that increasing the sever hardware configuration in a certain ratio does not necessarily increase the throughput in the same ratio. Yet, the scaling up scenario produces relatively better results. The dramatic increase in server throughput was observed because of an increase in all major hardware configurations: Nearly a four times increase in processing power; A four times increase in available memory; Use of RAID drives instead of SCSI drives. The increase in available memory actually enabled the server to cache more information than the previous server. Test 2 – Scaling Out the Baseline Environment This section discusses the outputs of tests done after deploying the application on two servers with different processing speeds set up in a load-balancing environment. Definition Scaling out is the process of adding servers to an existing server environment to improve performance and increase the throughput of the hosting environment, either by serving a higher number of requests per second or by hosting more Web sites. Benefits Scaling out requires relatively more time, effort, and money. However, it reduces bottlenecks and lock contention because requests coming into the hosting environment do not share resources. The request load is balanced among servers through load balancing mechanisms. Test Preparation In the third testing scenario, two Web servers were configured to run in a load-balancing environment using the Windows Server 2008 load-balancing feature called NLB (Network Load Balancer). In the setup in which Web servers run in cluster mode, the WCAT configuration file was set up to run 12,000 virtual users on 20 physical client machines, each running 600 threads. The IIS 7.0: Adding Processing Power vs. Load Balancing 20 massive number of virtual users is intended to ensure that sufficient load is applied on the clustered servers. Test hardware One server machine (NLB primary node): Quad 3 GHz Pentium 4 Processors 16 GB RAM Two network interfaces installed One server machine (NLB secondary node): Quad 2.4 GHz Pentium 4 Processors 8 GB RAM Twenty client machines: 1.4, 1.7 and 2.4 GHz Pentium 4 Processors 1 GB RAM Test configuration files In the cluster environment, the Web application and the complete database was copied and configured on both server machines. The WCAT settings file was edited to produce the desired traffic. Based on the environment, the required variables in the WCAT settings file were set as follows: Name of the scenario file to be used clientfile = "home.ubr"; IP address of the server to be tested server = "192.168.1.10"; Number of physical machines clients = 20; Number of virtual users per physical machine, totaling 1200 virtual users virtualclients = 600; Emulating User Load to the Web Site The following figure shows the network diagram of the test environment, which comprises: One server with Windows Server 2008, IIS 7.0, SQL Server 2005, and the NLB feature installed; One server with Windows Server 2008, IIS 7.0, SQL Server 2005, and the NLB feature installed and configured as the primary node of the NLB cluster; One WCAT controller server running on a Windows 2003 machine; IIS 7.0: Adding Processing Power vs. Load Balancing 21 Twenty WCAT client machines running Windows XP, each configured to simulate the load of 600 users. Test 3 Network Diagram Using Network Load Balancer (NLB) Network Load Balancing (NLB) is available in all variants of Windows Server 2008. Essentially, NLB uses a node-based distributed process that farms network traffic between a number of hosts or nodes, where each node constitutes a member of an NLB cluster. NLB is different from the Windows Failover Clustering Services. NLB clustering is designed mainly around the distribution of network traffic and provides fault tolerance at the interface level. To install and correctly configure NLB in our test environment, we conducted the following steps: Used three different IP addresses for the cluster-specific configuration; Assigned the first IP address on one network interface of the machine intended for use as the primary node. The Web application is browsed through this IP address or, in other words, it is the cluster IP address; Assigned the second IP address on the second network interface of the primary node; Assigned the third IP address on the single available network interface of the machine intended for use as the secondary node; IIS 7.0: Adding Processing Power vs. Load Balancing 22 Installed the NLB feature on both servers (cmd -> serverManagerCMD -i NLB); Created a new cluster on the primary node using Network Load Balancing Manager (START -> Programs -> Administrative Tools -> Network Load Balancing Manager); Set up the first node (the machine itself) and configured the cluster IP address as assigned on the first network interface; Set up the port rules to allow port 80 (HTTP) and port 443 (HTTPS); Once configured, added the second server to the cluster (main screen of NLB cluster -> right-click on the newly created cluster name under Network Load Balancing Clusters -> click on Add Host to Cluster); Completed the two-step configuration of the second server and clicked on Finish; Browsed the application through the cluster IP address returned on the appropriate page. The following are a few screenshots from the above process. NLB installation IIS 7.0: Adding Processing Power vs. Load Balancing 23 Network Load Balancing Manager Shortcut New Cluster from Network Load Balancing Manager Primary Cluster Node Primary Node’s Priority IIS 7.0: Adding Processing Power vs. Load Balancing 24 Cluster Ports Configuration The Test After installing and configuring Network Load Balancing on the two servers—one with four 2.4 GHz processors / 8 GB RAM and one with four 3 GHz processors / 16 GB RAM—the WCAT stress test was run using 12,000 virtual users—twenty client computers running 600 threads each. After the test was completed, as one Network Load Balancing node, the two servers served approximately 40,000 requests per second when the Processor (_Total)\% Processor Time counter reached 100%. Table 8: Scaling Out Test Analysis Server Configuration Megacycles / Second Requests / Second Megacycles / Request 4 2.4 GHz 4916 596 8.24 4 3 GHz 12288 6307 1.94 4 2.4 GHz 22,118 40,000 0.55 + 4 3 GHz Scaling Out Conclusion The megacycles per request matrix shown in the test analysis section above signifies a roughly 15% increase in overall throughput and added reliability. This is because, in the Network Load Balancing test, the number of requests per second increased and the megacycles per request reduced significantly. IIS 7.0: Adding Processing Power vs. Load Balancing 25 Notes and Assumptions The following considerations and assumptions were made before and during the execution of the above tests, which may differ from the production hosting environment. Each test was run several times to determine the exact point at which CPU utilization reached 100%. Only a single application with dummy data of one million records per table was used to perform all of the tests. The Web application response time is not discussed in great detail but was shown in the snippets of reports produced by WCAT. Realistically, overhead created by system resources and issues such as lock contention did not allow a system to scale linearly; therefore, a scale ratio of 1 to 4 should not be expected when moving from one to four processors. The tests were run in a completely isolated network, eliminating any unforeseen problems. The assumptions for requests per second made in the analysis section of the first two tests were made to actually calculate and determine how the deployment will perform when administrators expect a certain number of records per day. The Web server (IIS 7.0) and database server (SQL Server 2005) were running on the same server machine. IIS 7.0: Adding Processing Power vs. Load Balancing 26 Conclusion With the significant 70% reduction in required megacycles/request from baseline configuration to distributed architecture, the number of requests that an environment was able to handle increased from 600/sec to 40,000/sec. This significant increase in throughput shows that the distributed architecture resulted in nearly 40 times better performance. Keeping the assumptions and considerations in view, the results have an accuracy of 97% for this specific environment. Megacycles/request in baseline configuration: 8.24 Megacycles/request in distributed architecture: 0.55 Reduction in megacycles/request: 70% Requests/second in baseline configuration: ~600 Requests/second in distributed architecture: 40,000 The demonstration of different tests displayed the great capabilities of IIS 7.0. The Microsoft Web server family has produced the finest of its kind with the development and release of the new robust, scalable, and secure architecture of IIS 7.0. The isolated and secure architecture of IIS 7.0 provided with the scalability feature of Windows Server 2008 enabled the server to effectively handle the massive number of requests per second. After performing different tests and reaching up to the distributed environment with multiple servers, the last benchmark for Web server performance is reflected by the applications hosted by a server. After reaching the maximum throughput of the environment without any errors, the applications remain as the only piece to be tested and optimized. IIS 7.0 has made life easier for administrators in this domain as well. It provides isolated execution of work processes and an enhanced level of application pools. The extensive logging capabilities of IIS 7.0 enable administrators to actually pinpoint faulty applications. With the completion of all of the above tests, it is clear that a server with an optimal configuration, especially in load balancing architecture and running IIS 7.0, can easily handle millions of records per day without exceeding the standard processor utilization peak of 25%. Deploying the database server on a different machine can reduce this utilization peak even more significantly. This is a preliminary document and may be changed substantially prior to final commercial release of the software described herein. IIS 7.0: Adding Processing Power vs. Load Balancing 27 The information contained in this document represents the current view of Microsoft Corporation on the issues discussed as of the date of publication. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the date of publication. This white paper is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in, or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation. Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property. © 2009 Microsoft Corporation. All rights reserved. IIS 7.0: Adding Processing Power vs. Load Balancing 28