Written by Thomas Koetzing at Sunday, 12 March 2006
In larger Farms the "in place" load balancing technology plays a critical role during peak logon periods. Hundreds or even thousand of users start working in a short time frame, resulting in dozen of login requests within seconds. If a server comes online during that time, then every request is send to the new server because the server has no load. Now this server probably gets more than 10 login request per second and means a heavy resource usage for the server.
Due to the heavy resource usage the server might be unable to update its load and becomes unresponsive. Without the load updated, the Farm Data Collector will continue to send new login request to the server. This then looks like as if the server would “suck-in” all new incoming connections and is commonly known as the black hole effect.
Jeroen van de Kamp and Daniel Nikolic have written an article about the effect and can be found here. They also provide a workaround for the problem.
Citrix Slow-Start load balancing
With the Presentation Server 4.0 HotFix PSE400R01W2K010 & PSE400R01W2K3027, Citrix introduced the Slow-Start load balancing feature that uses Intelligent Load Biasing (ILB) to overcome black hole effects. But before exploring the ILB, you should first know how the load balancing is working with current Citrix versions.
ServerLoad with previous load bias
The Server load was biased with the following formula:
ServerLoad = ActiveLoad + ConcurrentLogons x Bias
The default Bias of 200 is a constant that is read by IMA at start-up from the registry. The Bais value can be tuned as described in the Citrix knowledgebase article CTX103653. Using the formula for an empty server that goes online and receives 10 new login requests:
ServerLoad = 0 + 10 x 200 => ServerLoad = 2.000
Example: The average farm load is 8.000 for respectively 60 users with a load evaluator that has a maximum of 100 connections (10.000 max. Load). This would mean that 40 concurrent logins are needed to get the ServerLoad up to 8.000 before the Data Collector would stop sending additional connections to the server.
ServerLoad with Intelligent Load Biasing
With ILB the ServerLaod was changed completely and replaces actually the previous Load Bias. The Server current login Bias is now calculated with the following formula:
Current Resolution Load += (MAX_LOAD - Current Resolution Load) / 2
Using the same numbers from the previous example would result in:
Current Resolution Load += (10.000 - 0) / 2 => Current Resolution Load = 5.000
After just one login the load has a value of 5.000! The second login will raise the level to 7.500 and the third login will reach the average Farm load level and therefore the Data Collector will chose the next Presentation Server.
The ILB adjusts itself back down after pending logons are completed and the logarithmically biased load is replaced with the actual server load. Citrix keeps also track of pending connections in a new load table to make sure the ILB don’t adjusts itself to fast. This is the real intelligent part of Citrix Slow-Start load balancing.
This behaviour limits the numbers of concurrent logins but can be changed trough the registry. To allow more concurrent logins the ILBMultiplier value needs to be increased from its default value of 2. The location of the key is
For example, increasing the value from 2 to 4 will change the Current Resolution Load to the following:
Current Resolution Load += (10.000 - 0) / 4 => Current Resolution Load = 2.500
Back to the example and this time with an ILBMultiplier of 4 would result in 6 concurrent logins to reach the average Farm load of 8.000
The ILB needs to be tested in real live to proof that it’s the adequate solution for the black hole effect. If you encounter any problems with the new ILB, then you can simply disable the ILB by setting UseILB to zero and fall back to the old way of doing it.