Exchange is essentially a database application, relying upon transaction logs and database files for data integrity and storage. These counters will indicate issues at the database layer, whether in writing to the database itself, writing to the transaction logs, or in the interaction between the database components themselves.
|
Counter
|
Expected values
|
|---|
|
MSExchange Database ==> Instances(*)\Log Generation Checkpoint Depth
Represents the amount of work in the log file count that will need to be redone or undone to the database files if the process fails.
|
Should be below 500 at all times for the Mailbox server role. A healthy server should indicate between 20 and 30 for each storage group instance.
If checkpoint depth increases continually for a sustained period, this is an indicator of either a long-running transaction (which will impact the version store) or of a bottleneck involving the database disks.
Should be below 1,000 at all times for the Edge Transport server role.
|
|
MSExchange Database(Information Store)\Database Page Fault Stalls/sec
Shows the rate that database file page requests require of the database cache manager to allocate a new page from the database cache.
|
This should be 0 at all times.
If this value is non-zero, this indicates that the database is not able to flush dirty pages to the database file fast enough to make pages free for new page allocations.
|
|
MSExchange Database(Information Store)\Log Record Stalls/sec
Shows the number of log records that cannot be added to the log buffers per second because the log buffers are full. If this counter is non-zero most of the time, the log buffer size may be a bottleneck.
If I/O log write latencies are high, check for RAID5 or sync replication on log devices.
|
The average value should be below 10 per second.
Spikes (maximum values) should not be higher than 100 per second.
|
|
MSExchange Database(Information Store)\Log Threads Waiting
Shows the number of threads waiting for their data to be written to the log to complete an update of the database. If this number is too high, the log may be a bottleneck.
|
Should be less than 10 on average.
Regular spikes concurrent with log record stall spikes indicate that the transaction log disks are a bottleneck.
If the value for log threads waiting is more than the spindles available for the logs, there is a bottleneck on the log disks.
|
|
MSExchange Database(Information Store)\Version buckets allocated
Shows the total number of version buckets allocated.
The maximum default version is 16,384. If version buckets reach 70 percent of maximum, the server is at risk of running out of the version store.
|
Should be less than 12,000 at all times.
|
|
MSExchange Database Instances(*)\I/O Database Reads Average Latency
Shows the average length of time, in milliseconds, per database read operation.
|
Should be 20 ms on average.
Should show 50 ms spikes.
|
|
MSExchange Database Instances(*)\I/O Database Writes Average Latency
Shows the average length of time, in milliseconds, per database write operation.
|
Should be 50 ms on average.
Spikes of up to 100 ms are acceptable if not accompanied by database page fault stalls.
|
|
MSExchange Database(Information Store)\Database Cache Size (MB)
Shows the amount of system memory, in megabytes, used by the database cache manager to hold commonly used information from the database files to prevent file operations. If the database cache size seems too small for optimal performance and there is little available memory on the system (check the value of Memory/Available Bytes), adding more memory to the system may increase performance. If there is ample memory on the system and the database cache size is not growing beyond a certain point, the database cache size may be capped at an artificially low limit. Increasing this limit may increase performance.
|
Maximum value is RAM-2GB (RAM-3GB for servers with sync replication enabled). This and Database Cache Hit % are extremely useful counters for gauging whether a server's performance problems might be resolved by adding more physical memory.
Use this counter along with store private bytes to determine if there are store memory leaks.
|
|
MSExchange Database(Information Store)\Database Cache Hit %
Shows the percentage of database file page requests that were fulfilled by the database cache without causing a file operation. If this percentage is too low, the database cache size may be too small.
|
Should be over 90% for companies with majority online mode clients.
Should be over 99% for companies with majority cached mode clients.
If the hit ratio is less than these numbers, the database cache may be insufficient.
|
|
MSExchange Database\Log Bytes Write/sec
Shows the rate bytes are written to the log.
|
Should be less than 10,000,000 at all times.
With each log file being 1,000,000 bytes in size, 10,000,000 bytes/sec would yield 10 logs/sec. This may indicate a large message being sent or a looping message.
|