Site Server - Detecting System Bottlenecks in Sites Using Site Server - Commerce Edition
September 1999
Introduction
If you manage a Web farm of computers running Microsoft Site Server 3.0 Commerce Edition, you can monitor system performance with Windows NT Performance Monitor or other similar tools to predict where bottlenecks are going to occur. Effective monitoring includes the following activities:
Run calibration tests
Test system capacity
Update user profiles
Monitor key performance counters
Run Calibration Tests
One of the first steps in understanding system limits is to run calibration tests during the development phase. Record the following results of the tests for each server for future use:
Size of available RAM
Maximum number of physical disk reads per second for each disk subsystem
Maximum number of physical disk writes per second for each disk subsystem
Maximum attainable network bit-rate
Test System Capacity
Test system capacity with the software you plan to deploy as soon as your code is reasonably stable and you have a solid user profile, site profile, and hardware architecture. System capacity testing should produce maximum transaction rates for each individual operation, thus essentially calibrating each individual operation. If testing is done properly, you can view system capacity as a percentage of the maximums determined during testing.
Update User Profiles
Actual user profiles will vary from the test environment, and code changes can significantly impact these numbers even after the system is deployed. When user profiles change, it is important to update them so they more closely match reality. Updated user profiles enable you to predict more accurately what changes need to be made in deployment.
Monitor Key Performance Counters
You can discover system bottlenecks by monitoring several key performance counters during peak periods. The following table describes the counters you should monitor. You can find the counters in the Microsoft® Windows NT® Performance Monitor. They will be distributed among the machines in the Personalization and Membership (P&M) service group. The counters in the System and Memory objects can be used to monitor capacity.
Object |
Counter |
Observation |
Services affected |
---|---|---|---|
Network Segment |
Bytes received per second |
If a card approaches its maximum capacity, another should be added. |
All |
|
Bytes sent per second |
|
|
Inetinfo Instance in the Process object |
Private bytes |
Monitor this for memory leaks or size approaching maximum available RAM. |
All |
|
Virtual bytes |
|
|
|
Working Set |
Should be well within hardware available. |
|
Memory |
Available bytes |
Should be greater than 4 MB. |
All |
|
Pages/sec |
Should be less than one per second. |
|
Physical Disk |
Disk Writes/sec |
Combined, these two counters should be well under the maximum capacity for the disk device. To enable this counter, run diskperf –y from the command shell and reboot the computer. |
All except dynamic directory |
|
Disk Reads/sec |
|
|
SQL Server |
IO transactions/sec |
Indicates how much activity the SQL server actually performs. |
Commerce, Membership Directory, Security |
System |
Context switches/sec |
If this is too high, add another system or look for fixes from Microsoft. |
All |
|
%Total Processor |
Peak utilization can be 100%, but utilization should not be sustained at a level with which you are uncomfortable. All of the server elements can be scaled horizontally. |
|
Web |
Total connections |
Actual number of users. |
All except content deployment |
|
Get requests/sec |
|
|
|
NonAnonymous Users per sec |
This is for the security user profile. |
Secure systems |
Active Server Pages |
Requests/sec |
|
Any Web server with dynamic content |
|
Requests executing |
If this number is always greater than one (1), there could be a problem in an ASP page or object that is causing a request to hang. |
|
|
Request wait time |
Should be very close to zero (0). |
|
|
Requests queued |
There should not be a significant queue except at peak periods. |
|
Site Server LDAP |
Connection Current |
If this number changes often, pooled connections are not being used wisely in the implementation. |
Membership Directory, Dynamic Directory |
|
Static Add per second |
Represents a new user, but is very expensive in disk costs on the SQL server. |
|
|
Static Modify per second |
Expensive operation that costs the SQL server significant disk I/O. |
|
|
Static Search per second |
Most searches are indexed in the SQL server, so this should be an inexpensive operation. |
|
|
Current Dynamic Object |
If this number never drops, the timeout for user objects is too high. |
Dynamic Directory |
|
Dynamic Add per sec |
|
|
|
Dynamic Modify per sec |
|
|
|
Dynamic Search per sec |
|
|
|
Dynamic Delete per sec |
|
|
Site Server Authentication |
Auto-Cookie Authentication Successes per second |
|
Any secured Web server |
|
Clear Text Authentication successes per second |
|
|
|
DPA successes per second |
|
|
|
HTML Forms Authentication successes per second |
|
|
|
Requests served from cache |
Shows good cache utilization in the broker object on the Web server. |
|
Site Server Gatherer |
Crawl in progress flag |
Can help explain high levels of activity on the crawl server. |
Search |
|
Documents successfully filtered rate |
|
|
Site Server Indexer |
Build in progress |
Can help explain high levels of activity on the index server. |
Search |
|
Number of documents |
Should be managed so the space is well within the RAM limitation of the server. |
|
Site Server Search Catalogs |
Active threads |
|
Search |
|
Average response time |
Should be less than three seconds. |
|
|
Successful query rate |
|
|
Site Server Content Deployment |
Current Replications Total |
Number of active replications. |
Content Deployment |
|
Bytes Total/sec |
Sum of the network activity generated by service. |
|
|
Files Sent/sec |
Monitor to confirm that levels of activity match requirements for data concurrency. |
|
|
Files received/sec |
|
|