I'm currently investigating load balancing with Apache mod_load_balancer and mod_proxy. I will also be looking at other load balancers later but one thing has become clear. Why do hardly any of the load balancers (if any at all) make distribution decisions based on the actual load of the worker machines.
Apache, for example, distributes requests based on number of requests, amount of data throughput and length of request queue. Why don't they have some mechanism to distribute requests to the machine with the lowest CPU or memory usage.
I'm building a system where each request requires a lot of CPU to the point that 2 or 3 worker machines can only service 10 or 20 concurrent clients before I've max'ed out all their CPUs. Some requests for xml are really lightweight while others for 'stuff' are really heavy.
Does it really make any difference in the scheme of things? Does one find that even a CPU based distribution algorithm settles down into a round robin style eventually. Does it add extra overhead that makes it not worth it.
Are there any other load balancers that offer this facility, do they offer it and no one uses it for what ever reason.
It seems like something that would be really good but no one seems to implement it. I'm confused and need a little bit of advice on the subject.