Diagnostics and performance monitoring for Reliable Service Remoting

The Reliable ServiceRemoting runtime emits performance counters. These provide insights into how the ServiceRemoting is operating and help with troubleshooting and performance monitoring.

Performance counters

The Reliable ServiceRemoting runtime defines the following performance counter categories:

Category Description
Service Fabric Service Counters specific to Azure Service Fabric Service Remoting , for example, average time taken to process request
Service Fabric Service Method Counters specific to methods implemented by Service Fabric Remoting Service, for example, how often a service method is invoked

Each of the preceding categories has one or more counters.

The Windows Performance Monitor application that is available by default in the Windows operating system can be used to collect and view performance counter data. Azure Diagnostics is another option for collecting performance counter data and uploading it to Azure tables.

Performance counter instance names

A cluster that has a large number of ServiceRemoting services or partitions have a large number of performance counter instances. The performance counter instance names can help in identifying the specific partition and Service method (if applicable) that the performance counter instance is associated with.

Service Fabric Service category

For the category Service Fabric Service, the counter instance names are in the following format:

ServiceFabricPartitionID_ServiceReplicaOrInstanceId_ServiceRuntimeInternalID

ServiceFabricPartitionID is the string representation of the Service Fabric partition ID that the performance counter instance is associated with. The partition ID is a GUID, and its string representation is generated through the Guid.ToString method with format specifier "D".

ServiceReplicaOrInstanceId is the string representation of the Service Fabric Replica/Instance ID that the performance counter instance is associated with.

ServiceRuntimeInternalID is the string representation of a 64-bit integer that is generated by the Fabric Service runtime for its internal use. This is included in the performance counter instance name to ensure its uniqueness and avoid conflict with other performance counter instance names. Users should not try to interpret this portion of the performance counter instance name.

The following is an example of a counter instance name for a counter that belongs to the Service Fabric Service category:

2740af29-78aa-44bc-a20b-7e60fb783264_635650083799324046_5008379932

In the preceding example, 2740af29-78aa-44bc-a20b-7e60fb783264 is the string representation of the Service Fabric partition ID, 635650083799324046 is string representation of Replica/InstanceId and 5008379932 is the 64-bit ID that is generated for the runtime's internal use.

Service Fabric Service Method category

For the category Service Fabric Service Method, the counter instance names are in the following format:

MethodName_ServiceRuntimeMethodId_ServiceFabricPartitionID_ServiceReplicaOrInstanceId_ServiceRuntimeInternalID

MethodName is the name of the service method that the performance counter instance is associated with. The format of the method name is determined based on some logic in the Fabric Service runtime that balances the readability of the name with constraints on the maximum length of the performance counter instance names on Windows.

ServiceRuntimeMethodId is the string representation of a 32-bit integer that is generated by the Fabric Service runtime for its internal use. This is included in the performance counter instance name to ensure its uniqueness and avoid conflict with other performance counter instance names. Users should not try to interpret this portion of the performance counter instance name.

ServiceFabricPartitionID is the string representation of the Service Fabric partition ID that the performance counter instance is associated with. The partition ID is a GUID, and its string representation is generated through the Guid.ToString method with format specifier "D".

ServiceReplicaOrInstanceId is the string representation of the Service Fabric Replica/Instance ID that the performance counter instance is associated with.

ServiceRuntimeInternalID is the string representation of a 64-bit integer that is generated by the Fabric Service runtime for its internal use. This is included in the performance counter instance name to ensure its uniqueness and avoid conflict with other performance counter instance names. Users should not try to interpret this portion of the performance counter instance name.

The following is an example of a counter instance name for a counter that belongs to the Service Fabric Service Method category:

ivoicemailboxservice.leavemessageasync_2_89383d32-e57e-4a9b-a6ad-57c6792aa521_635650083804480486_5008380

In the preceding example, ivoicemailboxservice.leavemessageasync is the method name, 2 is the 32-bit ID generated for the runtime's internal use, 89383d32-e57e-4a9b-a6ad-57c6792aa521 is the string representation of the Service Fabric partition ID,635650083804480486 is the string representation of the Service Fabric Replica/Instance ID and 5008380 is the 64-bit ID generated for the runtime's internal use.

List of Performance counters

Service method performance counters

The Reliable Service runtime publishes the following performance counters related to the execution of service methods.

Category name Counter name Description
Service Fabric Service Method Invocations/Sec Number of times that the service method is invoked per second
Service Fabric Service Method Average milliseconds per invocation Time taken to execute the service method in milliseconds
Service Fabric Service Method Exceptions thrown/Sec Number of times that the service method threw an exception per second

Service request processing performance counters

When a client invokes a method via a service proxy object, it results in a request message being sent over the network to the remoting service. The service processes the request message and sends a response back to the client. The Reliable ServiceRemoting runtime publishes the following performance counters related to service request processing.

Category name Counter name Description
Service Fabric Service # of outstanding requests Number of requests being processed in the service
Service Fabric Service Average milliseconds per request Time taken (in milliseconds) by the service to process a request
Service Fabric Service Average milliseconds for request deserialization Time taken (in milliseconds) to deserialize service request message when it is received at the service
Service Fabric Service Average milliseconds for response serialization Time taken (in milliseconds) to serialize the service response message at the service before the response is sent to the client

Next steps