Horizon 8 calculates the Server Load Index based on the load balancing settings you configure in Horizon Console. The Server Load Index indicates the load on the server. The Server Load Index can range from 0 to 100, where 0 represents no load and 100 represents full load. A Server Load Index of -1 indicates that load balancing is disabled. You can view the Server Load Index in the Horizon Console dashboard. Horizon also offers threshold values in the load balancing settings for logon storm handling.

Logon storms occur when a large number of users log into the farm within a short time interval. In these events, the Server Load Index reported by the RDS hosts may be stale, or out of date, because the sampling interval for the CPU, Memory, and Disk statistics is 30 seconds and only updates those metrics after 30 seconds.

RDS session load balancing mitigates flooding the least loaded RDS host with all the start sessions during a logon storm by classifying RDS hosts into three distinct groups and ensuring session requests are evenly distributed among all the RDS hosts to prevent overwhelming the least loaded RDS host during a logon storm.

Horizon Connection Server categorizes RDS hosts into three buckets:
  1. RDS hosts that support all default functionalities, such as multisession, unauthenticated access, and RDP/PCOIP/BLAST protocols. These agents must have a load index less than the configured Load Index Threshold or pae-RDSLoadIndexThreshold value (the default value is 20) and fewer connecting sessions than the Connecting Session Threshold or pae-RDSConnectingSessionThreshold value (the default value is 20). If there are fewer than the minimum configured RDS agents or pae-MinRDSServersInLBQueue (the default value is 4), the load index threshold is dynamically increased until the minimum number of RDS agents is attained.
  2. RDS hosts that support non-default functionalities. These agents must have a load index less than the configured Load Index Threshold value and fewer connecting sessions than the Connecting Session Threshold.
  3. RDS servers with a load index value greater than the configured Load Index Threshold value or pending sessions greater than the Connecting Session Threshold. If no servers are available in the first or second bucket, Connection Server then chooses an RDS host from this bucket.

When Connection Server receives a start session request, it selects an RDS host from either the first or second bucket based on the session request. The distribution of start session requests among RDS hosts in the first bucket is done fairly where each RDS host receives an equal share, ensuring all hosts in the first bucket are treated equally in terms of session allocation.

You can configure load balancing settings in Horizon Console: Load Index Threshold and Connecting Session Threshold values are used solely by the RDS host to reject and redirect sessions based on the number of concurrently connecting sessions on the machine and the load index by using threshold values configured in Horizon Console.

You can also configure load balancing settings using ADAM attributes: pae-RDSLoadIndexThreshold, pae-RDSConnectingSessionThreshold, and pae-MinRDSServersInLBQueue are used solely by Connection Server for fair distribution of sessions among RDS hosts.

You can also configure load balancing settings on each RDS host through Agent Configuration Policy Settings. For more information, see "VMware View Agent Configuration ADMX Template Settings" in the Horizon Remote Desktop Features and GPOs document. If both policy settings and Horizon Console settings for logon storm handling thresholds are set, the policy settings will take precedence.

Table 1. Load Balancing Settings in Horizon Console
Option Description
Use custom script

Select this setting to use a custom script for load balancing. If this setting is enabled, Horizon 8 does not consider other load balancing metrics for calculating server load index, but it will consider the Connecting Session Threshold and Load Index Threshold used for logon storm handling. To get the server load index, Horizon reads the CustomLoadValue registry key in the following location: HKLM\Sofware\VMware Inc.\VMware VDM\Performance Stats\CustomLoadValue. See Writing a Load Balancing Script for an RDS Host.

Include session count Select this setting to include the session count on the RDS host for load balancing. If none of the settings are selected for load balancing and if the custom script setting is not selected, Horizon 8 uses the session count by default. Disable this setting if you do not need to consider the session count for load balancing.
CPU usage threshold Threshold value for the CPU usage in percentage. Horizon 8 uses the configured CPU threshold to calculate the CPU load index factor. You can set a value from 0 to 100. The recommended value is 90. By default, this setting is not considered for load balancing. The default value is 0.
Memory usage threshold Threshold value for the memory in percentage. Horizon 8 uses the configured memory threshold to calculate the Memory Load Index factor. You can set a value from 0 to 100. The recommended value is 90. By default, this setting is not considered for load balancing. The default value is 0.
Disk queue length threshold Threshold of the average number of both read and write requests that were queued for the selected disk during the sample interval. Horizon 8 uses the configured threshold to calculate the Disk Load Index factor. You can set the value to any positive integer. By default, this setting is not considered for load balancing.
Disk read latency threshold Threshold of the average time of read of data from the disk in milliseconds. Horizon 8 uses the configured threshold to calculate the Disk Load Index factor. You can set the value to any positive integer. By default, this setting is not considered for load balancing. The default value is 0.
Disk write latency threshold Threshold of the average time of write of data to the disk in milliseconds. Horizon 8 uses the configured threshold to calculate the Disk Load Index factor. You can set the value to any positive integer. By default, this setting is not considered for load balancing. The default value is 0.
Connecting session threshold Threshold value for connecting sessions, for use in logon storm handling. The configured threshold specifies the maximum number of sessions that can concurrently log into each RDSH agent machine in the farm, exempting reconnecting sessions. This is configurable from 0 to 150. The recommended value is 20, but the value can be lowered to decrease the number of concurrent sessions that can log in to further protect each RDS host. By default, this threshold is disabled and does not deny session logons (default value is 0).
Load index threshold Threshold value for load index, for use in logon storm handling. The configured threshold specifies the minimum load index at which each RDSH agent machine in the farm will start denying session logins, exempting reconnecting sessions. This is configurable from 0 to 100. The recommended value is 0 (disabled). The value can be set to a higher number (between 90-100) to reject sessions on an RDS host based on an exceedingly high load index. By default, this threshold is disabled and does not deny session logons (default value is 0).