Business Central Performance Counters

The following table describes the performance counters that are available in Business Central for monitoring Business Central Server instances.

Client session counters

These counters pertain to sessions from the clients, NAS, and web services, to the server instance.

Counter Description
# Active child sessions Number of active child sessions on the Business Central Server instance. An active child session is a connection to the server instance from a Business Central client, such as the Dynamics NAV Client connected to Business Central or Business Central Web client, NAS, or Web services. A child session is created by a background task that is run asynchronously on a page. For more information, see Page Background Tasks.
# Active sessions Number of active sessions on the Business Central Server instance.

An active session is a connection to the Business Central Server instance from a Business Central client, such as the Dynamics NAV Client connected to Business Central or Business Central Web client, and Web services (OData and SOAP).
Server operations/sec Number of operations that have started on the Business Central Server per second.

An operation is a call to the Business Central Server instance from a Business Central client to run Business Central objects.

Note: OData and SOAP requests are not included.
Average server operation time (ms) Average duration of server operations in milliseconds.

SQL Server connection counters

These counters pertain to the connection from the server instance to the SQL Server instance and databases.

Counter Description
# Mounted tenants Number of tenants that are mounted on the Business Central Server instance. This counter is relevant with a multitenant server instance, where tenants are often mounted and dismounted.

# Open connections The current number of open connections from the Business Central Server instance to Business Central databases on SQL Servers.

The value is always equal to the sum of the # Open tenant connections counter and the # Open application connections counter. -We recommend that you use these counters instead.
# Open application connections Current number of open application connections from the Business Central Server instance to the Business Central application database on SQL Servers.

Because all connections are to only one application database, you will see failures when the total number of connections for all server instances exceeds the maximum number of connections allowed to the database.
# Open tenant connections Current number of open tenant connections from the Business Central Server instance to Business Central tenant databases on SQL Servers.

If there are multiple tenant databases, you cannot see the distribution of opened connections per database (or database pool).

With Azure SQL Database, connections are denied if the throttling limit is reached. The limit depends on the database configuration. Be aware that in clusters, other server instances will also have connections to the same database, so the total load on a database requires that you look at multiple server instances.

% Query repositioning rate Percentage of queries that are re-executed when fetching the query result.
Hard throttled connections Number of connections that were hard-throttled.
Soft throttled connections Number of connections that were soft-throttled.
Transient errors Number of transient errors.
Heartbeat time (ms) The time that it takes to complete a single write to a system table. Conceptually, this counter measures the time it takes to call the application database server to update the 'last active' field the dbo.Service Instance table for the Business Central Server instance. Every 30 seconds, the instance writes a record to indicate that the instance is "alive."

You can use this counter to indicate if there is network latency between the Business Central Server and the database.
# Preferred connection total requests Count of the total number of requests to the preferred connection cache. The preferred connection cache contains requests from the SQL connection pool that was last used by a Business Central user.
% Preferred connection cache hit rate Percentage of hits in the preferred connection cache, compared to the total number of requests.

Data and caching counters

These counters pertain to the data caching on the server instance.

Counter Description
# Calculated fields cache total requests Count of the total number of requests to the calculated fields cache. The calculated fields cache contains the results of CalcFields method (Record) calls.
% Calculated fields cache hit rate Percentage of hits in the calculated fields cache, compared to the total requests to the calculated fields cache.
# Command cache total requests Count of the total number of requests to the command cache. The command cache contains the results of all SQL commands.
% Command cache hit rate Percentage of hits in the command cache, compared to the total requests to the command cache.
# Primary key cache total requests Count of the total number of requests to the primary key cache. The primary key cache contains the results of requests to get a record by using its primary key.
% Primary key cache hit rate Percentage of hits in the primary key cache, compared to the total requests to the primary key cache.
# Result set cache total requests Count of the total number of requests to the result set cache. The result set cache contains result sets that are returned from SQL Server.
% Result set cache hit rate Percentage of hits in the result set cache, compared to the total requests to the result set cache.

The value also depends on the usage pattern and which parts of the application are is used. For example, the SelectLatestVersion method will clear the cache, which results in a lower hit rate.

In general, reading frequently updated values will lower the hit rate because the cache synchronization across Business Central Server instances will remove stale values, which causes re-reads.
# Rows in all temporary tables Count of number of rows in all temporary tables.

Scheduled task counters

These pertain to tasks that are run by Task Scheduler.

Counter Description
# Available tasks Remaining number of tasks that can potentially run simultaneously before the maximum number of tasks is reached. The value of this counter is the value the Maximum # of tasks counter minus the value of the # Running tasks counter.
# of task errors/sec Number of errors per second that are caused by running tasks. The task are causing errors in AL or exceptions on the server instance. If the value is greater than zero for an extended period of time, this typically indicates a failing task that keeps getting rescheduled.
# Running tasks Number of tasks that are currently running on the server instance. The value is limited to the value of the Maximum # of tasks counter.
Average task execution time The average time (in ticks) that tasks have taken to complete. Task execution time is counted regardless of whether the task completed successfully or raised an error.

There is no general rule for what the normal operations level is. To analyze this counter, look for large spikes to identify long-running tasks.

Note: A tick is the smallest unit that the your system uses for time measurements, and it is typically determined by the operating system. For example, in Windows, a single tick represents one hundred nanoseconds, which means that there are 10,000 ticks in a millisecond. Tick durations can differ bewteen systems, so be aware of this fact when comparing absolute values across systems.
Maximum # of tasks The maximum number of tasks that can run simultaneously. This value is defined by the Maximum Concurrent Running Tasks (TaskSchedulerMaxConcurrentRunningTasks) setting in the server instance configuration. Therefore, this value is constant until the server instance setting is changed and the instance is restarted.
Total # Pending tasks The total number of tasks in the shared task list that are waiting to be picked up by server instances connected to this application database. The tasks counted are those that are ready and have been scheduled to run now or earlier and that are not currently running.
Total # Running tasks Total number of tasks in the shared task list that are currently running by any server instance connected to this application database.
Time (ms) since the list of running tasks last had capacity for new tasks The time (ms) since the list of running tasks last had capacity for new tasks.

For more information about task scheduler, see Task Scheduler.

Set up Performance Counters in Windows Performance Monitor
Create a Data Collector Set From Template
Optimizing SQL Server Performance with Business Central