Performance monitoring is one of the most overlooked best practices in SharePoint Server 2007 implementations. Without monitoring, you don’t know the health of your farm and will be alerted by users, instead of the system, when an application fails. With a proper monitoring solution, you many times will be notified before a hard failure actually occurs. There are many who want to monitor their solution and just don’t know how. A very common question is, "What performance counters do I monitor, and what are the acceptable thresholds?" Unfortunately, there isn’t a single answer for most performance counters, but there is definitely a method to define them for your implementation. Some counters, such as Processor Queue Length, are very easy to determine thresholds for—it should never be more than one. Additionally, many counters you need to monitor are not specific to SharePoint Server 2007, so you should begin with monitoring your dependencies such as SQL Server, Windows Server, and network hardware. This section will give you an overview of how to baseline your system for performance. Table 23-2 is provided as a base reference of counters you want to monitor for SharePoint Server 2007.
Table 23-2. Base Performance Counters for SharePoint Server 2007
Counter | Description | Details |
---|---|---|
Total Processor Time | Use the % Processor Time counter to measure the percentage of elapsed time that the processor spends to execute a non-Idle thread. | Object: Processor Counter: %Processor Time Instance: _Total |
Processor Privileged Time | Use the % Privileged Time counter to measure the percentage of elapsed time that the process threads spend executing code in Privileged mode. | Object: Processor Counter: %Privileged Time Instance: _Total |
Processor User Time | Use the % User Time counter to measure the percentage of elapsed time the processor spends in User mode. | Object: Processor Counter: % User Time Instance: _Total |
Excessive Processor Usage | It is calculated by monitoring the time that the service is inactive and subtracting that value from 100%. | Object: Processor Counter: % Processor Time Instance: _Total |
Process – W3WP Processor Time | Measures the % of elapsed time that all process threads use the processor. | Object: Processor Counter: %Processor Time Instance: w3wp |
Processor Queue Length | If the threshold of this rule is exceeded, it indicates that the processor is not fast enough. | Object: System Counter: Processor Queue Length |
Page Faults per second | Use the counter Page Faults/sec to measure the average number of pages faulted per second. | Object: Memory Counter: Page Faults/sec |
Available Disk Space | Use the % Free Space counter to calculate the percentage of total usable space. | Object: LogicalDisk Counter: % Free Space _total |
Disk Request Write Size | Use the Disk Write Bytes/sec counter to measure the rate at which bytes are transferred to the disk during write operations. | Object: PhysicalDisk Counter: Disk Write Bytes/sec Instance: _Total |
Disk Request Write Count | Measures the rate of write operations on the disk. | Object: PhysicalDisk Counter: Disk Writes/sec Instance: _Total |
Disk Usage - Disk Time | Use the % Disk Time counter to calculate the percentage of elapsed time that the selected disk drive was busy servicing read or write requests. | Object: PhysicalDisk Counter: %Disk Time Instance: _Total |
Disk Block Read Size | Use the Avg. Disk Bytes/Read counter to measure the average number of bytes transferred from the disk during read operations. | Object: PhysicalDisk Counter: Avg. Disk Bytes/Read Instance: _Total |
Disk Request Read Size | Measures the rate at which bytes are transferred from the disk during read operations via Disk Read Bytes/sec. | Object: PhysicalDisk Counter: Disk Read Bytes/sec Instance: _Total |
Disk Request Read Count | Measures the rate of read operations from the disk. | Object: PhysicalDisk Counter: Disk Reads/sec Instance: _Total |
Web Service Bytes Sent/sec | Measures the rate at which data bytes are being sent by the Web service. | Object: Web Service Counter: Bytes Sent/sec Instance: _Total |
Web Service Current Connections | Monitors current IIS connections. | Object: Web Service Counter: Current Connections Instance: _Total (or per Web app) |
Web Service | Use the Total Method Requests/sec counter to measure the rate at which HTTP requests are received. | Object: Web Service Counter: Total method Requests/sec Instance: _Total (or specific Web apps) |
Web Service Bytes Received/sec | Measures the rate at which data bytes are received by the Web service. | Object: Web Service Counter: Bytes Received/sec Instance: _Total (or per Web app) |
Web Service Connection Attempts | Measures the rate at which connections to the Web service are being attempted. | Object: Web Service Counter: Connection Attempts/sec Instance: _Total |
W3WP Private Bytes | Measures the current size, in bytes, of memory that this process has allocated and that cannot be shared with other processes. | Object: Process Counter: Private Bytes Instance: w3wp |
W3WP Working Set | The Working Set is the set of memory pages recently touched by the threads in the process. | Object: Process Counter: Working Set Instance: w3wp |
Committed Memory in use | Use the % Committed Bytes In Use counter to measure the ratio of the MemoryCommitted Bytes counter to the MemoryCommit Limit counter. | Object: Memory Counter: % Committed Bytes In Use |
Available Memory | Use the Available MBytes counter to measure the amount of physical memory in MB immediately available for allocation to a process or for system use. | Object: Memory Counter: Available MBytes |
Memory Cache Bytes | Shows the sum of the MemorySystem Cache Resident Bytes, MemorySystem Driver Resident Bytes, MemorySystem Code Resident Bytes, and MemoryPool Paged Resident Bytes. | Object: Memory Counter: Cache Bytes |
.NET CLR Memory – Bytes | Use the # Bytes in all Heaps counter to sum the following four other counters: Gen 0 Heap Size, Gen 1 Heap Size, Gen 2 Heap Size, and Large Object Heap Size. | Object: .NET CLR Memory Counter: # Bytes in all Heaps Instance: _Global |
.Net CLR Data-SQL client Failed connections | Use the SqlClient: Total # failed connects counter to count the total number of connection open attempts that have failed. | Object: .NET CLR Data Counter: SqlClient Instance: Total # of failed attempts |
.Net CLR Data-SQL client connections | Measures the current number of active SQL connections. | Object: .NET CLR Data Counter: SqlClient Instance: Current # pooled and nonpooled connections |
.Net CLR memory – large Objects | Displays the current size of the Large Object Heap in bytes. Objects greater than 20 KB are treated as large objects by the Garbage Collector and are directly allocated in a special heap. | Object: .NET CLR Memory Counter: Large Object Heap size Instance: _Global |
Succeeded Search Queries | Use the Queries Succeeded counter to count the number of queries that produce successful searches. | Object: SharePoint Search Indexer Catalogs Counter: Queries Succeeded Instance: Search |
Search Query Rate | Monitors query rate. | Object: SharePoint Search Indexer Catalogs Counter: Queries Instance: Search |
Search – total # of Documents | Counts the total number of documents in the index. | Object: Indexing Service Counter: Total # of documents |
Cache Faults per Second | Cache activity is a reliable indicator of most application I/O operations. | Object: Memory Counter: Cache Faults/sec |
ASP.NET Requests per Second | Counts the number of requests per second. | Object: ASP.NET Apps v2.0.50727 Counter: Requests/Sec Instance: _Total |
ASP.NET Cache – Hit ratio | Use the Cache Total Hit Ratio counter to sum the ASP.NET application performance counters. | Object: ASP.NET Applications Counter: Cache Total Hit Ratio Instance: _Total |
ASP.NET Cache Size | Counts the total number of entries within the cache (both internal and user added). | Object: ASP.NET Applications Counter: Cache Total Entries Instance: _Total |
Memory – pages per second | Measures the rate at which pages are read from or written to disk to resolve hard page faults. | Object: Memory Counter: Pages/sec |
ASP.NET Worker Process Restart | Measures Worker Process Restarts. | Object: ASP.NET Counter: Worker Process Restarts |
Paging File | Measures the percentage of the Page File instance in use. | Object: Paging File Counter: %Usage Instance: _Total |
W3WP Handle Count | This number is equal to the sum of the handles currently open by each thread in this process. | Object: Process Counter: Handle Count Instance: w3wp |
Publishing Object Cache | Counts the current number of pools that are associated with the process. | Object: SharePoint Publishing Cache Counter: Publishing cache hits/sec |
Total number of ISAPI Connections | Counts the number of ISAPI connections that Windows SharePoint Services is processing simultaneously. | Object: Web Service Counter: Current ISAPI Extension Requests Instance: _Total |
Total number of ISAPI Requests | Counts the number of ISAPI requests per second. | Object: Web Service Counter: ISAPI Extension Request/sec Instance: _Total |
Excessive CPU Utilization | Use the % Processor Time counter to calculate the percentage of the elapsed time of all of the process threads used by the processor to execute instructions. | Object: Process Counter: %Processor Time Instance: _Total |
The best practice when monitoring a server farm is documenting what the counters are with no user load. Using VSTS 2008 and custom counter sets, you should obtain the exact counters in Table 23-2 before you connect users to the system. This gives you a picture of your overall server health, but also provides the counter levels when your server farm is idle. Store this baseline somewhere safe in case you should need it to troubleshoot your server farm. You can then create a monitoring solution with the tool of your choice using these numbers as a baseline, but System Center Operations Manager 2007 provides complete monitoring of all counters in Table 23-2 and has baselining functionality built in. Using System Center Operations Manager 2007 with the Windows SharePoint Services 3.0 and SharePoint Server 2007 management packs will greatly simplify your monitoring. If you do not have a monitoring product at all, you can use the built-in Windows Server tool Performance Monitor, also referred to by its executable name perfmon.exe.
Perfmon.exe provides a relatively simple way to monitor your server farm. It is very basic, is not distributed, and must keep real-time connections with farm members for performance. But it is a good starting place if you are new to monitoring. Both the Microsoft Office SharePoint Server 2007 Administrator’s Companion (Microsoft Press, 2007) and Microsoft SharePoint Products and Technologies Administrator’s Pocket Consultant (Microsoft Press, 2007) detail how to use perfmon.exe with SharePoint Server 2007. Because of the limitations of perfmon.exe, it should be limited to farm testing and very small implementations
On the CD, you will find Systems Center Operations Manager management packs for SharePoint Server 2007: Office SharePoint Server (MOSS) 2007 System Center Operations Manager 2007 MP.msi and Windows SharePoint Services 3.0 System Center Operations Manager 2007 MP.msi. You’ll also find the instructions for installation in the respective Office Word documents.
The System Center Operations Manager 2007 product suite allows for real-time monitoring of services, event logs, trace logs, WMI (Windows Management Instrumentation), and performance counters. First, the monitoring of services and WMI allow us to know the status of services, such as Office SharePoint Server Search, and automate actions like restarting the service and notifying the appropriate support staff. Second, System Center Operations Manager 2007 gives us the ability to monitor the performance counters, event logs, and applications logs. We can then create alerts, performance monitors, baselines, and tasks based on predefined thresholds for objects. In this section, we will primarily cover using System Center Operations Manager 2007 for monitoring the health of SharePoint Server 2007, including Windows SharePoint Services 3.0. Be aware that you probably need to baseline and monitor supporting applications as well, such as SQL Server, Internet Information Services, and ForeFront Security for SharePoint, if applicable.
You can install System Center Operations Manager 2007 and create custom monitors for the previously discussed performance counters and services. In fact, many advanced administrators will prefer to pick and choose what counters and services they will monitor. But for most of us, we can load System Center Operations Manager 2007 management packs. Management packs are a pre-packaged set of event rules, performance rules, and alert rules that can use many providers including the event logs, WMI, application logs, and performance counters. The management packs for specific applications, such as SharePoint Server 2007, include pertinent rules from these providers to automate responses (also called tasks) such as service restarting, custom scripts, SMTP notifications, SNMP traps, and command-line execution. If you have not used or tested System Center Operations Manager 2007, you will be pleasantly surprised at the ability to manage all of your applications, not just SharePoint Server 2007. Likewise, you should refer to the System Center Operations Manager 2007 product documentation for technical details and importing management packs. This section does not cover the installation, configuration, or management of System Center Operations Manager 2007 or the SharePoint Products and Technologies management packs.
For a full list of available management packs, browse to the System Center Pack Catalog at http://www.microsoft.com/technet/prodtechnol/scp/catalog.aspx. The link is also available in the System Center Operations Manager 2007 Administration Actions menu.
Because SharePoint Server 2007 is a multi- tiered, distributed application, the following management packs are relevant to SharePoint Server 2007:
Windows SharePoint Services 3.0 Management Pack
SharePoint Server 2007 Management Pack
ForeFront Security for SharePoint Management Pack (if loaded)
SQL Server Management Pack
Web Sites and Services Management Pack
The two management packs discussed here are the Windows SharePoint Services 3.0 and SharePoint Server 2007 management packs for System Center Operations Manager 2007. At a high level, the SharePoint Products and Technologies management packs are divided into two sections: Services/Tasks and Rules/Counters. System Center Operations Manager 2007 gives you the ability to monitor relevant SharePoint Products and Technologies services, such as the SharePoint Timer service, and start or restart when the service is unavailable or stopped. Table 23-3 shows the monitored services and associated tasks included with the Windows SharePoint Services 3.0 management pack; Table 23-4 shows the monitored services and associated tasks included with the SharePoint Server 2007 management pack. If you will not use System Center Operations Manager 2007 to monitor your SharePoint Products and Technologies implementation, you should strongly consider monitoring these services manually.
Table 23-3. Monitored Services and Tasks for Windows SharePoint Services 3.0
Service/Action | Description |
---|---|
WSS 3.0 Server Entity State | Monitors the Windows SharePoint Services 3.0 Tracing Service |
Tracing | Monitors the Windows SharePoint Services 3.0 Tracing Service (logs events to the trace logs in the 12 Hive) |
Timer | Monitors the Windows SharePoint Services 3.0 timing service (also called SPTimer and OWSTimer) |
Search | Monitors the Windows SharePoint Services 3.0 Search Service |
IIS | Monitors IIS Web Services |
SQL Server Connections | Monitors SQL Server connections |
SQL Server Database Error | Monitors SQL Server Database errors |
SQL Server Database Permissions | Monitors changes to SQL Server Database permissions |
SQL Server Database Space | Monitors the full SQL Server Database error event log |
Task | Description |
Start WSS Tracing Service | Starts or Restarts the wsstracing.exe Windows service |
Start WSS Timer Service | Starts or Restarts the owstimer.exe Windows services |
Start WSS Search Service | Starts or Restarts Windows SharePoint Services 3.0 Search (%12 Hive%BINmssearch.exe) |
Windows SharePoint Services 3.0 IIS reset | Caution: Complete IISReset (not Windows SharePoint Services 3.0 Application specific) |
Table 23-4. Monitored Services and Tasks for SharePoint Server 2007
Description | |
MOSS 2007 Server Entity State | Monitors the SharePoint Server 2007 Server Entity State |
SSO | Monitors the Single Sign-on Service |
Load Balance | Monitors the Office Document Conversions Load Balancer Service |
Launcher | Monitors the Office Document Conversions Launcher Service |
Search | Monitors the Office SharePoint Server Search Services (%program files%Microsoft Office Servers12.0Binmssearch.exe) |
Task | Description |
SharePoint Server 2007 IIS reset | Caution: Complete IISReset – not only SharePoint Server 2007 Web applications |
Start MOSS SSO service | Starts or restarts the SharePoint Server 2007 Single Sign-on Service |
Start MOSS Load Balancer Service | Starts or restarts the SharePoint Server 2007 Load Balancer Services |
Start MOSS Launcher Service | Starts or restarts the SharePoint Server 2007 Load Balancer Launcher Service |
Start MOSS Search Service | Starts or restarts the SharePoint Server 2007 Search Service (Query and/or Index roles) |
SharePoint Server 2007 Recycle Application Pool | On demand, recycles all application pools with a five-second pause in between each individual recycle |
The best practice is to use System Center Operations Manager 2007 to monitor your SharePoint Server 2007 environment. Doing so will ensure proper services remain in the proper state, relevant events are captured, and performance counter thresholds are within range.
You could certainly use a third-party product to monitor the above services, but the real benefit to using System Center Operations Manager 2007 for monitoring SharePoint Products and Technologies is the ability to leverage the rules for countless event IDs and performance counters. System Center Operations Manager 2007 can monitor your event logs, application logs, and performance counters and execute a task you specify, such as recycling an application pool, restarting owstimer.exe, or notifying you through e-mail. Additionally, System Center Operations Manager 2007, in conjunction with the SharePoint Products and Technologies management packs, provide robust reports as follows:
Alerts Report
Most Common Alerts Report
Event Analysis Report
Most Common Events Report
.NET CLR Data Performance Report
.NET CLR Memory Performance Report
ASP .NET Applications Performance Report
Indexing Service Performance Report
Logical Disk Performance Report
Memory Performance Report
MOSS Search Performance Report
Network Interface Performance Report
Paging File Performance Report
Physical Disk Performance Report
Process Performance Report
Processor Performance Report
System Performance Report
Web Service Performance Report
3.133.114.221