Transport Server Counters

[This topic is in progress.]

This topic describes common performance and scalability Transport Server counters.

The following table shows transport disk counters.

Counter Description Threshold Troubleshooting

Logical/Physical Disk(*)\Avg. Disk sec/Read

Shows the average time, in seconds, of a read of data from the disk.

Should be less than 20 milliseconds (ms) on average. Spikes (maximum values) should not be higher than 50 ms.

Logical/Physical Disk(*)\Avg. Disk sec/Write

Shows the average time, in seconds, of a write of data to the disk.

Should be less than 20 milliseconds (ms) on average. Spikes (maximum values) should not be higher than 50 ms.

The following table shows transport queue length counters.

Counter Description Threshold Troubleshooting

\MSExchangeTransport Queues(_total)\Aggregate Delivery Queue Length (All Queues)

Shows the number of messages queued for delivery in all queues.

Should be less than 3000 and not more than 5000.

\MSExchangeTransport Queues(_total)\Active Remote Delivery Queue Length

Shows the number of messages in the active remote delivery queues.

Should be less than 250 at all times.

\MSExchangeTransport Queues(_total)\Active Mailbox Delivery Queue Length

Shows the number of messages in the active mailbox queues.

Should be less than 250 at all times.

\MSExchangeTransport Queues(_total)\Submission Queue Length

Shows the number of messages in the submission queue.

Should not exceed 100. If sustained high values are occurring, investigate Active Directory and Mailbox servers for bottlenecks or performance-related issues.

\MSExchangeTransport Queues(_total)\Active Non-Smtp Delivery Queue Length

Shows the number of messages in the Drop directory that is used by a Foreign connector.

Should be less than 250 at all times.

\MSExchangeTransport Queues(_total)\Retry Mailbox Delivery Queue Length

Shows the number of messages in a retry state attempting to deliver a message to a remote mailbox.

Should be less than 100 at all times.

\MSExchangeTransport Queues(_total)\Retry Non-Smtp Delivery Queue Length

Shows the number of messages in a retry state in the non-Simple Mail Transfer Protocol (SMTP) gateway delivery queues.

Should not exceed 100.

\MSExchangeTransport Queues(_total)\Retry Remote Delivery Queue Length

Shows the number of messages in a retry state in the remote delivery queues.

Should not exceed 100. We recommend that you check the next hop to determine the causes for queuing.

\MSExchangeTransport Queues(_total)\Unreachable Queue Length

Shows the number of messages in the Unreachable queue.

Should not exceed 100.

\MSExchangeTransport Queues(_total)\Largest Delivery Queue Length

Shows the number of messages in the largest delivery queues.

Should be less than 200 for the Edge Transport and Hub Transport server roles.

\MSExchangeTransport Queues(_total)\Poison Queue Length

Shows the number of messages in the poison message queue.

Should be 0 at all times.

The following table shows transport dumpster counters.

Counter Description Threshold Troubleshooting

\MSExchangeTransport Dumpster\Dumpster Size

Shows the total size (in bytes) of mail items that are currently in the transport dumpster on this server.

Not applicable.

\MSExchangeTransport Dumpster\Dumpster Inserts/sec

Shows the rate at which items are inserted into the transport dumpster on this server. Determines the current rate of transport dumpster inserts.

Not applicable.

\MSExchangeTransport Dumpster\Dumpster Item Count

Shows the total number of mail items that are currently in the transport dumpster on this server. Shows the current amount of items that are being held in the transport dumpster.

Not applicable.

\MSExchangeTransport Dumpster\Dumpster Deletes/sec

Shows the rate at which items are deleted from the transport dumpster on this server. Determines the current rate of transport dumpster deletions.

Not applicable.

The following table shows transport database counters.

Counter Description Threshold Troubleshooting

MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Writes/sec

Shows the rate of log file write operations completed. Determines the current load. Compare values to historical baselines.

Not applicable.

MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Log Reads/sec

Shows the rate of log file read operations completed. Determines the current load. Compare values to historical baselines.

Not applicable.

MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Generation Checkpoint Depth

Represents the amount of work (in count of log files) that need to be redone or undone to the database files if the process fails.

Not applicable.

MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Version buckets allocated

Total number of version buckets allocated. Shows the default backpressure values as listed in the edgetransport.exe.config file.

Should be less than 200 at all times.

MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Reads/sec

Shows the rate of database read operations completed. Determines the current load. Compare values to historical baselines.

Not applicable.

MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\I/O Database Writes/sec

Shows the rate of database write operations completed. Determines the current load. Compare values to historical baselines.

Not applicable.

MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\Log Record Stalls/sec

Shows the number of log records that cannot be added to the log buffers per second because they are full. If this counter is non-zero most of the time, the log buffer size may be a bottleneck.

Should be less than 10 per second on average. Spikes (maximum values) should not be greater than 100 per second.

MSExchange Database ==> Instances(edgetransport/Transport Mail Database)\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 threads waiting on average.

The following table shows extensibility agent counters.

Counter Description Threshold Troubleshooting

MSExchange Extensibility Agents(*)\Average Agent Processing Time (sec)

Shows the average agent processing time in seconds per event.

Should be less than 20 at all times. Sustained higher latencies may indicate a hung agent.

MSExchange Extensibility Agents(*)\Total Agent Invocations

Shows the total number of invocations since the last restart. Shows the current invocation rate.

Not applicable.

The following table shows Transport load determing counters.

Counter Description Threshold Troubleshooting

\MSExchangeTransport Queues(_total)\Messages Submitted Per Second

Shows the number of messages that have been queued in the Submission queue per second. Determines current load. Compare values to historical baselines.

Not Applicable.

\MSExchangeTransport Queues(_total)\Messages Completed Delivery Per Second

Shows the number of messages that are delivered per second. Determines current load. Compare values to historical baselines.

Not Applicable.

\MSExchange Store Driver(_total)\Inbound: LocalDeliveryCallsPerSecond

Shows the number of local delivery attempts per second. Determines current load. Compare values to historical baselines.

Not Applicable.

\MSExchange Store Driver(_total)\Outbound: Submitted Mail Items Per Second

Shows the number of mail items per second being submitted. Determines current load. Compare values to historical baselines.

Not Applicable.

\MSExchangeTransport SmtpReceive(_total)\Average bytes/message

Shows the average number of message bytes per inbound message received. Determines sizes of messages being received for an SMTP receive connector.

Not Applicable.

\MSExchangeTransport SmtpReceive(_total)\Messages Received/sec

Shows the number of messages received by the SMTP server each second. Determines current load. Compare values to historical baselines.

Not Applicable.

\MSExchangeTransport SmtpSend(_total)\Messages Sent/sec

Shows the number of messages sent by the SMTP send connector each second. Determines current load. Compare values to historical baselines.

Not Applicable.

\MSExchange Store Driver(_total)\ Inbound: MessageDeliveryAttemptsPerSecond

Shows the number of attempts for delivering transport mail items per second. Determines current load. Compare values to historical baselines.

Not Applicable.

MSExchange Store Driver(_total)\Inbound: Recipients Delivered Per Second

Shows the number of inbound recipients delivered per second. Determines current load. Compare values to historical baselines.

Not Applicable.

MSExchangeTransport Queues(_total)\Messages Queued for Delivery Per Second

Shows the number of messages that have been queued for delivery per second. Determines current load. Compare values to historical baselines.

Not Applicable.

MSExchangeTransport Queues(_total)\Messages Completed Delivery Per Second

Shows the number of messages that are delivered per second. Determines current load. Compare values to historical baselines.

Not Applicable.