This article describes different methods used to troubleshoot load balancing issues.
QFARM used without any switches retrieves information directly from the data store. Running QFarm without any switches is a good troubleshooting step to determine IMA connectivity to the data store. Use the qfarm utility with the respective switches to monitor server and application loads on all servers in the farm. Load balancing information is obtained from the Zone Data Collector(s) and the Local Host cache.
Issuing the qfarm /load command displays the load for all servers in the farm.
The qfarm /app command displays the load for all applications and servers in the farm. All Apps in the following screenshot show a load of 99999, as no load evaluator is assigned to any of the applications.
Refer to CTX111964 – [Document Not Found].
You can also use the following commands to monitor loads on all servers in a particular zone:
Note: Logons must be enabled on a server for qfarm to report a load. If logons are disabled, qfarm does not return any information. Refer to the following screen shots:
After enabling logons on the server, qfarm /load reports a correct value.
Use queryds to view Dynamic Store tables. Queryds is not installed as part of the Citrix XenApp installation. This tool can be found on the Citrix XenApp CD-ROM in \\Support\debug\<OSPlatform>.
Compare queryds connected and disconnected tables against what is visible in the Citrix AppCenter Console.
Issue the queryds tables command to get a full list of available tables to query.
Issue the queryds /table:Conn_Sessions command to see all connected sessions.
Issue the queryds /table:Disc_Sessions to view all disconnected sessions. Another table to query is LMS_ServerLoadTable.
This shows the real load along with information as reported to the Data Collector.
Based on this value, the Data Collector redirects the next session to the least loaded server.
Default Load Evaluator:
ProtocolMask-Bias:64HEX = 100 Decimal
RuleLoads:b:1; = Server user load
Load:64HEX = 100 Decimal
Advanced Load Evaluator:
ProtocolMask-Bias:c8HEX = 200 Decimal
RuleLoads:3:31;1:16;6:25; = Memory Usage, CPU Utilization, Page Swaps
Load:1473HEX = 5235 Decimal
RuleLoads: (For reference when using queryds /table:LMS_ServerLoadTable)
Server User load b
Application user load a
Context switches 2
CPU Utilization 1
Disk Data I/O 7
Disk operations 8
IP Range 9
Memory Usage 3
Page Faults 4
Page Swaps 6
Enable Logging in the Citrix XenApp Console. The following screen shot has the Enable Logging button highlighted:
Once enabled, logging records all connections to the farm.
Verify that the Load Manager Monitor tab displays the correct information.
Default Load evaluator Set:
Advanced Load Evaluator Set:
Create a Citrix Diagnostics Facility (CDF) trace by tracing the following modules:
Refer to the following articles for more information:
CTX117070 – [Document Not Found]
CTX105449 – Load Manager Rules Explained
The Default Load Evaluator is based on the Load Throttling and Server User Load rules.
The Advanced Load Evaluator is based on the CPU Utilization, Load Throttling, Memory Usage and Page Swaps rules:
If you are having an issue with the Advanced or Custom Load Evaluator, test with the Default Load Evaluator. If loads are reported correctly with the Default Load Evaluator it might indicate that there is a problem with the system performance counters of the server.
In this case, launch Perfmon and verify that the system counters appear and work as expected. Ensure all performance counters are enabled.
CTX102862 – [Document Not Found].
To rebuild corrupt performance counters refer to the Microsoft article http://support.microsoft.com/kb/300956.
If you have multiple zones, ensure you configure the Data Collectors to share their load information. This can be done in the following two ways:
To reduce network traffic in large farms with multiple zones, Citrix recommends that you use the Zone Preference and Failover policy rule to direct user requests for applications to preferred zones within the farm.
For more information refer to CTX111059 – [Document Not Found].
Intelligent Load Biasing (or Load Throttling) is a new feature of the Load Balancing subsystem.
“Incoming connections to a load balanced farm fail to fully connect. This occurs when a new server comes online during peak logon periods. At that time, the load balancer is sending all incoming connections to the new server, essentially overwhelming and preventing it from fully updating its server load. With Load Throttling, logons are given a logarithmic load bias during connection time to limit the number of simultaneous logon requests. This biasing level is used in conjunction with the server's "real" load to route connections to the least-loaded server. This allows time for servers to gradually increment the number of connections in environments where the server load is well below the farm average load, which is often the case when you restart a server.
How to Use Load Throttling
Load Throttling uses Intelligent Load Biasing (ILB). ILB works by giving logons a higher load bias. The default ILB algorithm assigns a bias of ½ the remaining load capacity. Essentially, the default algorithm is: (New) Current Resolution load = (Old) Current Resolution Load + [(Max Load - Old Current Resolution Load) / 2 ]. The ILB adjusts itself back down after pending logons are complete.
Note: All servers must have ILB enabled in the Default and/or Advanced Load Evaluator for the load to be shared evenly among all servers.
CTX112423 – Load Manager Administrator's Guide
CTX103242 – Servers Are Missing in the Load Balancing Usage Report
CTX103694 – [Document Not Found]
CTX104926 – Data Collector Resolves Load Balance Requests to a Single Server
CTX104771 – [Document Not Found]
CTX105060 – [Document Not Found]
CTX103128 – [Document Not Found]