tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Lamprecht <>
Subject patch: mod_jk load balance algorithm that accounts for current worker load
Date Sat, 06 Aug 2005 07:48:39 GMT
mod_jk developers:

We have been using mod_jk for some time, (1.2.8, 1.2.10, and now
1.2.14), with Apache 2.0.50, Tomcat 5.5.9, under fedora (2.4.22
kernel).  We have 6 tomcats as balanced workers, and we're using

When load testing our tomcats individually, they can handle about 10
requests per second.  Our application is completely parallel, nothing
is shared (no database).  However, when we test against the load
balancer, it starts out okay, but degrades to about 12 to 16 requests
per second overall.  It should be getting somewhere between 50 and 60
requests per second (6 servers * 10 requests per second each).  With
mod_jk 1.2.14 we were able to check the (very helpful) jkstatus page,
and we noticed that the Busy column was very high for the "lagging"
server, yet mod_jk kept giving it more requests, while other servers
were sitting with 0 Busy.  We tried both optimistic and pessimistic
locking modes; pessimistic may have been slightly better but it was
hard to say.

We added a simple load balancing algorithm (to common/jk_lb_worker.c)
that takes into account the "busyness" of each worker and its
lbfactor, and picks the worker with the lowest current load.  It
ignores the "Load Balancer Value".  This simple algorithm improved our
test from 12-16 requests per second to 60+ requests per second, and
watching the jkstatus page showed that all servers were kept "evenly"
busy.  If one particular server slowed down, its Busy value increased,
so it received fewer requests.

We'd like to submit our patch to mod_jk.  We've added a new lb.method option -- lb.method=B for "Busyness", and
updated the jkstatus display page accordingly.  I wanted to get any
feedback or suggestions from the mailing list before submitting the
patch to bugzilla.  Thanks,

Chris Lamprecht

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message