Using Transaction Cost Analysis
Transaction cost analysis (TCA) is a method of measuring site capacity. TCA can measure the performance cost of a transaction, how much traffic your Web site can handle, and the cost of performing various types of transactions on your site. You use TCA to measure the capacity of your site and then use the results to increase the capacity of each system component. You can also compare server transactions with one another to determine which ones are putting the greatest demands on your system.
The term transaction in TCA refers to work done by a server or servers (Web servers, middle–layer servers, and computers that are running SQL Server) to fulfill a user request. For example, a user request for a product description page stored in a database is a transaction, as is a request to add an item to a shopping basket. This term does not refer to e-commerce transactions in which money is exchanged.
Analyzing Traffic
After you have analyzed your current system and documented your hardware and software, you must determine how many users typically use the site at the same time, especially at peak usage. This data usually comes from:
Market analysis. Analysis of a new site. You may have commissioned a market analysis report to predict how much traffic your site can expect to receive at the time it is deployed and afterward. Use this report as the baseline configuration for your TCA.
Site usage analysis. Analysis of an existing site. Analyze your Web server log files to see how many hits your site receives at any time, in addition to usage trends that might indicate whether parts of the site have become more or less popular over time. When calculating how many concurrent users your site currently supports, remember to base your calculations on peak usage, instead of on typical usage.
Creating a Usage Profile
After you know how many users are using your site, you must then determine how they use it so that you can estimate how much demand a typical user places on the system. You should create a usage profile so that you will have a baseline from which to start. A usage profile is a set of properties that describe the traffic patterns on a site. For example, a usage profile shows how many people browse a certain page, the browse-to-buy ratio, and how many users add an item to their basket and then remove it. System administrators use the usage profile to determine how many Web servers are needed and to configure a site.
You must analyze the usage log files of your site to create a usage profile. If you have log files that you gathered over a long period of time (at least a week), use them to obtain accurate averages. First, identify the operations that a user can do (browse, search, and so on). Next, gather the following data:
Number of users to the site
Number of hits each page receives (which pages have been visited)
Time spent on each page
Session length
Peak periods of activity
You can use the number of visits to each page to profile typical user operations for your site. The following list shows a sample usage profile with typical shopper operations for an e-commerce retailer:
Average time of session: 10 minutes
% of visitors who purchase: 2
Peak multiplier: 3x average
Requests per visit: 10
The following table shows an example of the statistically determined page request distribution. The requests are calculated as a whole and then normalized over the statistically averaged user session.
Operation |
% Dist |
ASPs per operation |
Calculation |
Normalized per visit |
---|---|---|---|---|
Anonymous Basket |
8.15 |
9 |
73.35 |
2.12 |
Anonymous Browse |
20.37 |
3 |
61.11 |
1.76 |
Anonymous Checkout |
0.51 |
10 |
5.10 |
0.15 |
Anonymous Search |
5.09 |
2 |
10.18 |
0.29 |
Anonymous Step-Search |
3.05 |
3 |
9.15 |
0.26 |
Basket |
8.15 |
12 |
97.80 |
2.82 |
Browse |
20.37 |
2 |
40.74 |
1.17 |
Checkout |
0.71 |
15 |
10.65 |
0.31 |
Homepage |
24.44 |
1 |
24.44 |
0.70 |
Register New User |
1.02 |
3 |
3.06 |
0.09 |
Search |
5.09 |
1 |
5.09 |
0.15 |
Step-search |
3.05 |
2 |
6.1 |
0.18 |
Total |
100.00 |
|
|
10 |
Increasing Site Capacity
After measuring the capacity of the system, you may discover that the current system cannot handle the amount of traffic that it is currently experiencing on the Web site. Alternatively, you may be concerned about an upcoming surge in traffic for a new marketing initiative or a seasonal surge, such as Back-to-School or Christmas.
To prevent a lapse in performance, you need to test the expected traffic level on your Web servers to accurately determine where to scale servers to meet the predicted load. (Performing calculations to determine how many servers to add may work, as long as capacity problems are isolated to one layer.) You can use System Monitor to monitor the counter values for different server objects. You can use the specific Commerce Server performance counters to view the server objects important to your business. For more information about System Monitor, see Windows Server 2003 Help or Windows Server 2008 Help.
To increase capacity, you should determine which resources are depleted. You can scale the Web servers vertically by increasing the memory, CPU, or network capacity. Another way to increase the capacity of the Web servers is to add more servers to the load-balanced cluster. However, it is important to have a good understanding of the capacity of the whole Web farm before you decide to scale a single component.
Increasing Middle-Layer Capacity
You can use middle-layer servers for a variety of purposes, such as running applications or storing content. To evaluate performance of your middle layer you should monitor the following performance counters:
Memory
System
Physical disk
If the values for these counters are insufficient, you should scale this layer. For example, when monitoring the Bytes received per second counter, you should compare this counter to the total bandwidth of your network adapter card to determine whether your network connection is creating a bottleneck. We recommend that you use 50 percent or less of existing capacity to increase room for spikes in visitor traffic. If this number is very close to the capacity of the connection, and processor and memory use are moderate, the connection might be the problem.
You may also want to incorporate documentation that discusses performance issues specific to the technologies that you are using on this layer to find ways to increase middle-layer capacity. For example, Windows Server Help provides information about how to use Network Load Balancing (NLB) to allow for access to additional servers that could increase capacity.
Increasing Database Capacity
In order to increase your database capacity, you must first monitor the following performance counters:
Memory
System
Physical disk
SQL Server
After monitoring these counters, you will have a better idea if you need to scale up: add memory, physical disk space, or servers.
To scale out, you can increase database capacity by adding a new server. It is easier to add a new server than to move an application that is sharing a database server to a new server. However, increasing capacity is not always a simple matter of adding another server. Review the documentation for your database application for guidelines about scaling the database.