Performance Test Report KENTICO CMS 5.5. Prepared by Kentico Software in July 2010



Similar documents
Kentico CMS 6.0 Performance Test Report. Kentico CMS 6.0. Performance Test Report February 2012 ANOTHER SUBTITLE

Kentico 8 Performance. Kentico 8. Performance June 2014 ELSE. 1

System Requirements Table of contents

Performance White Paper

How To Test For Performance And Scalability On A Server With A Multi-Core Computer (For A Large Server)

Sage SalesLogix White Paper. Sage SalesLogix v8.0 Performance Testing

Tableau Server 7.0 scalability

Sitecore Health. Christopher Wojciech. netzkern AG. Sitecore User Group Conference 2015

Network device management solution

INTERNET INFORMATION SERVICES (IIS) IMPLEMENTATION BEST PRACTICES: By: Terri Donahue, Microsoft IIS MVP

Infor Web UI Sizing and Deployment for a Thin Client Solution

QLIKVIEW ARCHITECTURE AND SYSTEM RESOURCE USAGE

Hardware Configuration Guide

Scaling out a SharePoint Farm and Configuring Network Load Balancing on the Web Servers. Steve Smith Combined Knowledge MVP SharePoint Server

Microsoft Dynamics NAV 2013 R2 Sizing Guidelines for On-Premises Single Tenant Deployments

Tableau Server Scalability Explained

System Administration Training Guide. S100 Installation and Site Management

Performance in the Infragistics WebDataGrid for Microsoft ASP.NET AJAX. Contents. Performance and User Experience... 2

System Requirements for Microsoft Dynamics SL 2015

Scalability and Performance Report - Analyzer 2007

Capacity Planning for Microsoft SharePoint Technologies

QLIKVIEW SERVER MEMORY MANAGEMENT AND CPU UTILIZATION

Microsoft SharePoint Server 2010

DIABLO TECHNOLOGIES MEMORY CHANNEL STORAGE AND VMWARE VIRTUAL SAN : VDI ACCELERATION

Magento & Zend Benchmarks Version 1.2, 1.3 (with & without Flat Catalogs)

Content Repository Benchmark Loading 100 million documents

Load Balancing and Clustering in EPiServer

Adonis Technical Requirements

FIGURE Selecting properties for the event log.

Implementation Guide. Version 10

Throughput Capacity Planning and Application Saturation

Getting Started with Sitecore Azure

System Requirements for Microsoft Dynamics SL 2015

Dell Virtualization Solution for Microsoft SQL Server 2012 using PowerEdge R820

Communicating with devices

Perfmon counters for Enterprise MOSS

Microsoft SharePoint 2010 on HP ProLiant DL380p Gen8 servers

Scaling Analysis Services in the Cloud

How to Configure a Stress Test Project for Microsoft Office SharePoint Server 2007 using Visual Studio Team Suite 2008.

Virtual Server Hosting Service Definition. SD021 v1.8 Issue Date 20 December 10

Cache Configuration Reference

Liferay Portal Performance. Benchmark Study of Liferay Portal Enterprise Edition

Gladinet Cloud Enterprise

Mobile Performance Testing Approaches and Challenges

SQL Server Business Intelligence on HP ProLiant DL785 Server

Delivering Quality in Software Performance and Scalability Testing

Abila Grant Management. System Requirements

1 (11) Paperiton DMS Document Management System System Requirements Release: 2012/

Toolbox 4.3. System Requirements

Dell Microsoft Business Intelligence and Data Warehousing Reference Configuration Performance Results Phase III

CMS Diagnostics Guide

Grant Management. System Requirements

Load Manager Administrator s Guide For other guides in this document set, go to the Document Center

SAP HANA - Main Memory Technology: A Challenge for Development of Business Applications. Jürgen Primsch, SAP AG July 2011

Using NCache for ASP.NET Sessions in Web Farms

Informatica Data Director Performance

Virtual desktops made easy

Microsoft SharePoint Server 2010

An Oracle White Paper July Oracle Primavera Contract Management, Business Intelligence Publisher Edition-Sizing Guide

Evaluation Report: Accelerating SQL Server Database Performance with the Lenovo Storage S3200 SAN Array

Express5800 Scalable Enterprise Server Reference Architecture. For NEC PCIe SSD Appliance for Microsoft SQL Server

NETWRIX EVENT LOG MANAGER

HP reference configuration for entry-level SAS Grid Manager solutions

Appendix 3. Specifications for e-portal

Server Installation Manual 4.4.1

Phire Architect Hardware and Software Requirements

Introduction 1 Performance on Hosted Server 1. Benchmarks 2. System Requirements 7 Load Balancing 7

MAGENTO HOSTING Progressive Server Performance Improvements

Cost Efficient VDI. XenDesktop 7 on Commodity Hardware

Dragon NaturallySpeaking and citrix. A White Paper from Nuance Communications March 2009

What s New in SharePoint 2016 (On- Premise) for IT Pros

Kentico CMS 7.0 Windows Azure Deployment Guide

Cognos Performance Troubleshooting

Microsoft Dynamics SL 7.0 System Requirements Guide

Muse Server Sizing. 18 June Document Version Muse

QUESTIONS & ANSWERS. ItB tender 72-09: IT Equipment. Elections Project

CentOS Linux 5.2 and Apache 2.2 vs. Microsoft Windows Web Server 2008 and IIS 7.0 when Serving Static and PHP Content

Test Run Analysis Interpretation (AI) Made Easy with OpenLoad

Network device management solution.

Modernizing Servers and Software

Dev01: Kentico CMS 7 Developer Essentials Syllabus

Best Practices for Deploying SSDs in a Microsoft SQL Server 2008 OLTP Environment with Dell EqualLogic PS-Series Arrays

Case Study: Load Testing and Tuning to Improve SharePoint Website Performance

CQG/NET Technical Specifications. September 16, 2014 Version

SafePeak Case Study: Large Microsoft SharePoint with SafePeak

How AWS Pricing Works May 2015

Performance And Scalability In Oracle9i And SQL Server 2000

Legal Notices Introduction... 3

WHITE PAPER. Domo Advanced Architecture

What do we mean by web hosting?

SharePoint Impact Analysis. AgilePoint BPMS v5.0 SP2

multiple placeholders bound to one definition, 158 page approval not match author/editor rights, 157 problems with, 156 troubleshooting,

StACC: St Andrews Cloud Computing Co laboratory. A Performance Comparison of Clouds. Amazon EC2 and Ubuntu Enterprise Cloud

Load/Stress Test Plan

Transcription:

KENTICO CMS 5.5 Prepared by Kentico Software in July 21 1

Table of Contents Disclaimer... 3 Executive Summary... 4 Basic Performance and the Impact of Caching... 4 Database Server Performance... 6 Web Farm Performance... 7 Impact of Site Size on Performance... 8 Cloud Computing... 9 Server Hardware Configurations... 1 Testing Configurations... 11 Caching Configurations... 12 How the Tests Were Performed... 13 Performance Test Results... 14 24-hour Stability Test Results... 21 Performance Test for Files (File, Media File)... 22 Comparison of Performance for both Development Models... 27 Comparison with a Blank ASPX Page... 28 When Full-Page Caching Doesn't Help... 29 How to Plan Your Hardware - Server Sizing for Kentico CMS... 3 2

Disclaimer This report was conducted by Kentico Software with intention to provide customers with information on what performance they can expect from Kentico CMS. Kentico Software put in the best effort to conduct an unbiased test. Still, the performance of the website depends on many parameters, such as computer hardware, network configuration, client configuration, operating system and software configuration, site content, number of items in Kentico CMS database, information architecture, custom code and other factors. Kentico Software doesn't provide any guarantee that the same values will be achieved with other than tested configurations. The reader of this report uses all information in this report at his/her own risk. Kentico Software shall in no case be liable for any loss resulting from the use of this report. 3

Executive Summary Kentico CMS for ASP.NET provides excellent performance and scalability. Being built on the Microsoft ASP.NET platform, it leverages all its power. The tests were performed internally by Kentico staff on very common hardware (Intel Core 2 Quad at 2.66 GHz, 1k SATA II disks, 4 GB memory). Kentico has not used any high performance servers, so the results may be even better on more powerful hardware. Basic Performance and the Impact of Caching The slowest parts of a web application are typically accessing the database and rendering the content for a web browser. Kentico CMS optimizes the performance by storing content that is often accessed in a server memory. This mechanism is called caching. When another visitor comes to the same page, the page is already stored in the very fast computer memory and Kentico CMS can quickly send it to the browser without repeatedly accessing the database and rendering the page. The following graph shows a comparison of how caching influences the performance of Kentico CMS (the test was conducted on a single machine with both web server and database). Caching can be configured for a particular part of the page - this is called content caching. You can also configure full-page caching that stores the whole page pre-rendered in the memory. The following figure shows the impact of caching on the overall performance. The values represent the number of requests per second (RPS) which means how many pages can be viewed by the visitors per second. 4

Requests Per Second Performance Overview (Requests per Second) 14 12873 12 1 8 6 4 2 24 33 Cache only page info Content caching Full page caching Comments: As you can see, Kentico CMS provides a highly efficient caching mechanism that boosts the performance significantly. 5

Requests Per Second Database Server Performance If you need to achieve high performance, it's recommended that you install the web server and the database server on two different machines which allows you to distribute the computing and achieve shorter response time, especially if you cannot use caching. The following figure compares the performance of a single server configuration and a twoserver configuration (Web Server + Database Server): Database Server Performance Single Server Two Servers 14 12 12873 12738 1 8 6 4 2 24 24 33 33 Cache only page info Content caching Full page caching Comments: As you can see, the performance gain from a dedicated database server is most significant when the caching is not used. Kentico CMS also allows you to distribute the SQL Server database on multiple database servers using SQL Server Merge Replication which allows for virtually unlimited database performance and high availability. 6

Requests Per Second Web Farm Performance Web farms allow you to distribute the computing among multiple web servers that all provide the same content. It can also be used for achieving high availability of your site - if some server in the web farm stops working, the other server(s) will serve the content instead of the broken server. The following figure compares the performance of a single web server and two web servers (each configuration uses a single dedicated database server): Web Farm Performance Web Server + DB Server Two-Server Web Farm 3 25 25 58 2 15 12738 1 5 24 468 33 656 Cache only page info Content caching Full page caching Comments: The results show that Kentico CMS provides excellent scalability. With an additional web server, the performance grows by 1%. The result is only slightly lower for configuration without caching since this configuration highly uses database server that was shared between both web servers. 7

Requests Per Second Impact of Site Size on Performance The website performance depends also on the number of pages and other items in the CMS database. Kentico CMS was optimized for high number of items and it was tested with 1, documents and 1,, users stored in the database. Not only the public website, but also Kentico CMS administration interface can handle this number of items without a negative effect on usability and user interface responsiveness. The following figure compares the performance of a small site (284 documents), medium site (1, documents) and a large site (1, documents), both running on a single web server with a dedicated SQL Server: Impact of Site Size on Performance Small site Medium Site Large Site 14 12738 127171282 12 1 8 6 4 2 24 196 43 33 33 333 Cache only page info Content caching Full page caching Comments: the performance without any caching drops significantly with a very large number of pages. This scenario requires site-specific optimization of SQL queries and database indexes. The performance with caching is practically same regardless of the site size. 8

Cloud Computing Kentico CMS can also be used with cloud computing platforms that provide both high performance and availability. Kentico CMS can work with Rackspace cloud platform (Mosso) and Amazon EC2. Support for Microsoft Azure is planned for Q1/211. Performance tests were not performed on these platforms. 9

Server Hardware Configurations Client Computers and Web Servers Motherboard: Giga-Byte EP45C-DS3R (Intel Socket 775, Intel P45) Processor: Intel Core 2 Quad Q94 BOX (2.66GHz) Graphics card: MSI R435-D512H PCIE 512MB DDR2 SDRAM Memory: Kingston 2G-UDIMM (PC2-64) Capacity 4 GB (Kit 2x 2 GB ) Type DDR2-SDRAM Memory Bus 166 MHz Frequency HDD: 1x Western Digital WD15HLFS VelociRaptor 5RZ Format 3.5 Capacity 15 GB Interface SATA II Speed 1rpm Access Time 4.2ms / 4.7ms Cache 16 MB Database Server Memory: Kingston 4G-UDIMM (PC2-64) Capacity 16 GB (Kit 4x 4 GB ) Type DDR2-SDRAM Memory Bus 166 MHz Frequency (other parameters of the database server were same as for the other configurations) 1

Testing Configurations Configuration A - Single shared server (web + database) Windows 23 R2 Service Pack 2, Microsoft SQL Server 25 CLIENT1 CLIENT2 LAN-client1 LAN-client2 WEB1 Configuration B - Two separate servers (a web server and a database server) Windows 23 R2 Service Pack 2, Microsoft SQL Server 25 CLIENT1 LAN-client1 CLIENT2 LAN-client2 WEB1 LAN-SQL1 SQL1 11

Configuration C Two servers in a web farm and a database server Windows 23 R2 Service Pack 2, Microsoft SQL Server 25 CLIENT1 CLIENT2 CLIENT3 CLIENT4 LAN-client1 LAN-client2 LAN-client3 LAN-client4 LAN-web WEB1 WEB2 LAN-sql-manage LAN-sql-manage 1Gb switch SQL1 Caching Configurations Cache 1 - Cache only page info: Page info (page data and metadata) cache enabled for 1 minutes Cache 2 - Content caching: content caching (web part/control-level caching) enabled for 1 minutes, with default filters used 1 Cache 3 - Full-page caching: full-page caching (whole page cached in memory) enabled for 1 minutes 1 The use of additional XHTML filters decreases performance by around 3% when using content caching - this can be solved by writing XHTML-compliant code by developers, so that the XHTML filter doesn't have to be used. 12

How the Tests Were Performed All tests were performed for 1 minutes (+1 minute warm-up time) Domain name was in the host file (localhost was not used) Tests were executed in Visual Studio Enterprise Architect Application Center Test 5 simultaneous browser connections HTTP, DNS, Socket, Windows or Kentico CMS errors were NOT allowed during tests Kentico CMS restart was NOT allowed during one test run Before each test: o Restart IIS and delete.net temporary files Kentico CMS used GZip compression o Following settings key was added to the web.config section <appsettings>: <add key="cmsallowgzip" value="true" /> Network traffic was measured on the server side and it was the sum of all interfaces Which Performance Counters Were Watched Processor(_Total)\% Processor Time Process(w3wp)\Thread Count Process(w3wp)\Handle Count Process(w3wp)\Private Bytes Process(w3wp)\Virtual Bytes.NET CLR Memory(w3wp)\# Bytes in all Heaps.NET CLR Memory(w3wp)\# Gen Collections.NET CLR Memory(w3wp)\# Gen 1 Collections.NET CLR Memory(w3wp)\# Gen 2 Collections.NET CLR Exceptions\# Exceps thrown / sec ASP.NET\Application Restarts ASP.NET\Requests Rejected ASP.NET\Worker Process Restarts (not applicable to IIS 6.) Memory\Available Mbytes PhysicalDisk(_Total)\Disk Read Bytes/sec PhysicalDisk(_Total)\Disk Write Bytes/sec Network Interface\Bytes Received/sec Network Interface\Bytes Sent/sec 13

Performance Test Results The tests were based on visiting the following pages: Sample Corporate site ~/Home.aspx ~/Services.aspx ~/Network-administration.aspx ~/Products.aspx ~/Products/PDAs/HP-iPAQ-114.aspx AVG requests per second AVG requests per hour AVG requests per 24 hours Single shared server Cache only page info 24 65 749 17 353 311 Cache content 33 1 53 376 28 9 23 Output cache 12 873 45 654 546 1 217 454 563 Two separate servers Cache only page info 24 751 226 2 32 697 Cache content 33 1 3 66 27 468 42 Output cache 12 738 45 96 275 1 225 67 342 Two Servers in a Web Farm + DB Server Cache only page info 468 1 52 452 4 65 394 Cache content 656 2 6 132 54 936 84 Output cache 25 58 91 92 551 2 451 214 684 14

Requests Per Second Requests Per Second Single Shared Server Web Server + DB Server Two-Server Web Farm 3 25 25 58 2 15 12873 12738 1 5 24 24 468 33 33 656 Cache only page info Content caching Full page caching Comments: Here you can see that full page caching provides the best possible performance. The graph also shows that using a web farm multiplies the overall performance by the number of web servers. 15

Response Time [ms] 5 45 4 35 3 25 2 15 1 5 Response Time [ms] Single Shared Server Web Server + DB Server Two-Server Web Farm 491 416 427 32 32 34 7 7 7 Cache only page info Content caching Full page caching Comments: The response time highly depends on the amount of cycles that need to be done to render the requested page. The full-page caching only takes the HTML code cached in the memory and sends it to the browser, so it's extremely fast. 16

SQL Server CPU Utilization [%] Database Server CPU Utilization [%] Single Shared Server Web Server + DB Server Two-Server Web Farm 7 66 6 5 4 3 27 2 1 1 1 Cache only page info Content caching Full page caching Comments: The graph shows that once caching is used, the database server utilization is very low since the website only accesses the database when the content is requested for the first time. The results for Single Shared Server were not measured since the database server shared the CPU with the web server. 17

Web Server CPU Utilization [%] Web Server CPU Utilization [%] Single Shared Server Web Server + DB Server Two-Server Web Farm 1 1 1 1 98 98 96 94 94 93 95 95 95 92 9 88 Cache only page info Content caching Full page caching Comments: The graph shows the utilization of the processor by all processes running on the server. The Single Shared Server configuration includes both the web server process and SQL Server process. Since we tested for the highest performance, the utilization tends to reach 1%. The only exception are configurations without caching (Cache only page info) that depend on an external database server that slows down the Web server CPU utilization since the Web server has to wait for the database server. 18

Peak Memory Usage [MB] Peak Memory Usage [MB] Single Shared Server Web Server + DB Server Two-Server Web Farm 45 4 35 355 384 391 43 397 413 3 25 2 184 196 179 15 1 5 Cache only page info Content caching Full page caching Comments: Our tests required no restarts of the web server process during the 24-hour test which also means there were no memory leaks that would crash the process. The full-page caching requires less memory since it creates a smaller number of.net objects in the memory (that are destroyed by the garbage collector then). The results for full-page caching may, however, look different if you have a large site with many pages that would be stored in the memory. 19

Network Interface - Data Sent [Bytes/sec] 1 536 169 1 812 87 3 534 883 2 494 82 2 491 65 4 957 584 84 342 29 83 374 12 Network Interface - Data Received [Bytes/sec] 155 579 183 825 357 85 253 12 252 825 5 856 9 352 845 9 345 92 Network Interface - Data Received [B/s] Single Shared Server Web Server + DB Server Two-Server Web Farm 2 18 16 14 12 1 8 6 4 2 18 733 987 Cache only page info Content caching Full page caching Network Interface - Data Sent [B/s] Single Shared Server Web Server + DB Server Two-Server Web Farm 18 169 956 6 16 14 12 1 8 6 4 2 Cache only page info Content caching Full page caching 2

24-hour Stability Test Results Comments: The pictures show the Requests per Second (RPS) value during the 24-hour stability test. The test was performed on the Two-server web farm with a dedicated database server and with full-page caching. There are two pictures, because we used two client computers to generate the load test traffic for one web server. The results show that Kentico CMS provided a stable performance during the whole testing period, without any crashes, errors or downtimes. The system has shown the same stability also for the "Cache only page info" and "Content caching" configurations. All these tests were also performed on a single shared server with expected results. 21

Performance Test for Files (File, Media File) Tests were based on: Server configuration: Two separate servers for Web and database Image file: Microsoft.jpg 124x768px 145.11KB (and its resized versions) GetFile - serves all files uploaded into the content repository: ~/getfile/7ad6d7cd-61df-46e1-99-943e69e62ff/microsoft.aspx ~/ getfile/7ad6d7cd-61df-46e1-99-943e69e62ff/microsoft.aspx?width=32 ~/ getfile/7ad6d7cd-61df-46e1-99-943e69e62ff/microsoft.aspx?width=64 GetMediaFile - serves all files stored in the media library: ~/ getmedia/8af6e551-5ad9-462b-9e8e-4464a6ff/microsoft.aspx ~/ getmedia/8af6e551-5ad9-462b-9e8e-4464a6ff/microsoft.aspx?width=32 ~/ getmedia/8af6e551-5ad9-462b-9e8e-4464a6ff/microsoft.aspx?width=64 AVG requests per second AVG requests per hour AVG requests per 24 hours GetFile Database 6 194 962 5 198 975 Database + Cache 2675 7 197 87 191 943 23 File System 112 3 291 368 87 769 812 File System + Cache 2587 7 197 87 191 943 23 GetMediaFile File System 2 134 5 389 14 143 79 43 File System + Cache 2 545 6 936 683 184 978 27 22

Requests Per Second Requests Per Second GetFile GetMediaFile 3 25 2675 2134 2587 2545 2 15 1 5 6 112 Database Database + Cache FileSystem FileSystem + Cache Comments: GetFile is generally slower because of dealing with the related document (not just the file). If you plan to work with many media files or with large files, such as video or music, it's recommended that you use the Media Library instead of storing these files in the content tree. 23

SQL Server CPU Utilization [%] Response Time [ms] Response Time [ms] GetFile GetMediaFile 18 16 14 12 1 8 6 4 2 167 3 Database Database + Cache FileSystem FileSystem + Cache 88 43 3 33 SQL Server CPU Utilization [%] GetFile GetMediaFile 25 2 21 15 1 8 5 4 Database Database + Cache FileSystem FileSystem + Cache Comments: GetFile needs to call the database because of dealing with the related document (not just the file), which leads to higher SQL Server CPU utilization. 24

Peak Memory Usage [MB] Web Server CPU Utilization [%] Web Server CPU Utilization [%] GetFile GetMediaFile 1 9 8 7 6 5 4 3 2 1 66 82 Database Database + Cache FileSystem FileSystem + Cache 94 92 81 84 Peak Memory Usage [MB] GetFile GetMediaFile 6 5 445 59 479 51 5 4 346 3 2 1 Database Database + Cache FileSystem FileSystem + Cache 25

Network Interface - Data Sent [Bytes/sec] Network Interface - Data Received [Bytes/sec] Network Interface - Data Received [B/s] GetFile GetMediaFile 4 5 4 4 3 888 3 97 771 3 781 296 3 5 3 215 817 3 2 5 2 1 5 1 621 922 1 5 82 324 Database Database + Cache FileSystem FileSystem + Cache Network Interface - Data Sent [B/s] 16 14 GetFile 157 88 46 GetMediaFile 135 723 51 154 592 93 153 247 72 12 1 8 77 96 3 6 4 2 4 698 317 Database Database + Cache FileSystem FileSystem + Cache 26

Requests Per Second Comparison of Performance for both Development Models Kentico CMS provides two development models - ASPX templates that are based on standard ASP.NET pages and portal engine that runs on the top of the standard ASP.NET pages and adds an extra, browser-based rapid website development layer. Portal Engine vs. ASPX Templates Portal Engine ASPX Templates 14 12 12738 12974 1 8 6 4 2 24 33 33 418 Cache only page info Content caching Full page caching Comments: As you can see, the ASPX templates provide a better performance since they require less overhead. However, when full-page caching is used, there's no difference in performance since the pages are rendered only once. The extra overhead of the portal engine is balanced by easier and faster development with portal engine in comparison to ASPX page templates. 27

Requests Per Second Comparison with a Blank ASPX Page Corporate Site ASPX vs. Blank ASPX Page Corporate Site ASPX Blank ASPX Page 18 16259 16 14 12974 12 1 8 6 4 2 Comments: Kentico CMS with full-page caching provides performance that is not too far to displaying a blank ASPX page which is an excellent result if you realize that it provides dynamic content stored in the database. 28

When Full-Page Caching Doesn't Help As you can see from the test results, the use of full-page caching may increase the overall performance significantly. It's important to say that in some case the full-page caching may not be used: 1. Content that changes more often than every minute - if you need to display real-time data, you cannot use full-page caching. 2. Personalized content - if you need to display content personalized by the current user, such as user name or if you need to restrict displayed content by current user's permissions, the full-page caching cannot be used. Kentico CMS can cache such pages, but since the page will be stored in the memory for every authenticated user, it may consume lots of memory. You can still use content caching for chosen web parts/controls in such cases, but it provides a significantly lower performance. It's highly recommended that you avoid things like personalized content on the pages that are displayed very often. 29

How to Plan Your Hardware - Server Sizing for Kentico CMS This chapter will help you plan the configuration of your servers for Kentico CMS so that they can handle the expected load. It will provide you with very rough estimate, but at least, it will give you some guidelines for your decisions. Please note: if you want to get accurate numbers, the only way is to create the website and run the test on your hardware! There are too many factors that influence the overall performance of your site that it's impossible to calculate the performance upfront, without doing the performance tests. Also, it's highly recommended that you include performance testing as a part of testing phase of your project and have some reserve for performance optimization. Launching a new site without prior performance testing and optimization often results in bad start and sleepless nights. Step 1 - Identify the peak load Identify the peak load, not just the number of visitors per month, because the traffic is not spread equally in time and there may be peaks at specific times. What is the highest number of concurrent visitors on your site now? What number do you expect in the future? What will this number look like if you run a successful advertisement? Step 2 - Estimate the number of page views per second Imagine what a typical visitor will do on your site (or better, use some web analytics software to see the current visitor behavior if you already have such site). How many pages does a typical visitor see every minute? Identify the pages that are same for all visitors and do not require any personalization per user and that do not change more often than 1 or 2 minutes. These pages can use full-page caching that provides the best performance. How many pages of this type do you need to serve per second? This number will be called PVa. Identify the pages that display personalized or frequently changing information, such as current user's name or content personalized by user's permissions. These pages can use only content caching for chosen web parts or controls. How many pages of this type do you need to server per second? This number will be called PVb. 3

Step 4 - Calculate the number of web servers and database servers The number of web servers can then be very roughly calculated as (PVa + 52*PVb)/13 if you consider the servers of the same performance level. The number of database servers highly depends on the caching option you choose. While fullpage caching requires a single database server only even if you use a large web farm, the content caching requires database servers whose number can be calculated as PVb/3. How to Get More Precise Numbers As you can see, the numbers are very hypothetical and you still need to consider other factors, such as custom code you wrote, other applications running on the server, ASP.NET start-up and/or compilation time, hardware configuration, network configuration, size of pages and images, speed of communication with client computers, etc. So the only way how to get more real-world numbers is to do the performance tests on the actual website. 31