Hi all, sorry for the stress but it seems that it is a time to come back to the discussion related to the load balancing for JVM (Tomcat).
Prehistory: Recently we made benchmark and smoke tests of our product at the sun high tech centre in Langen (Germany). As the webserver apache2.2.4 has been used, container -10xTomcat 5.5.25 and as load balancer - JK connector 1.2.23 with busyness algorithm. Under the high load the strange behaviour was observed: some tomcat workers temporary got the non-proportional load, often 10 times higher then the others for the relatively long periods. As the result the response times that usually stay under 500ms went up to 20+ sec, that in its turn made the overall test results almost two time worst as estimated. At the beginning we were quite confused, because we were sure that it was not the problem of JVM configuration and supposed that the reason is in LB logic of mod_jk, and the both suggestions were right. Actually the following was happening: the LB sends requests and gets the session sticky, continuously sending the upcoming requests to the same cluster node. At the certain period of time the JVM started the major garbage collection (full gc) and spent, mentioned above, 20 seconds. At the same time jk continued to send new requests and the sticky to node requests that led us to the situation where the one node broke the SLA on response times. I ^ve been searching the web for awhile to find the LoadBalancer implementation that takes an account the GC activity and reduces the load accordingly case JVM is close to the major collection, but nothing found. Once again the LB of JVMs under the load is really an issue for production and with optimally distributed load you are able not only to lower the costs, but also able to prevent bad customer experience, not to mention broken SLAs. Feature request: All lb algorithms have to be extended with the bidirectional connection with jvm: Jvm -> Lb: old gen size and the current occupancy Lb -> Jvm: prevent node overload and advice gc on dependent on parameterized free old gen space in %. All the ideas and comments are appreciated. Regards, Yefym.