We have a web app which consists of some very expensive dynamic pages. Network bandwidth isn't an issue, but web-server CPU load is. We used to run a front-end webserver, back-end webserver and database server on the same machine. Recently we tried moving the back-end webserver to two separate machines which the front-end server proxies to in round-robin style. With our typical load this has solved the problem quite nicely.

However, we find that under extremely high load the system is unstable and "falls over" onto one or the other of the two backend servers. In other words, the load on one of them gets really high, while the other looks basically idle (while serving the same number of requests, mind you) and it tends to stay that way. I think it's due to the way our app works, where the slow running requests end up with more cleanup work to do, and the fast requests typically end up doing less work.

Any suggestions for a simple method of allocating a higher number of requests to the machine with the lower load? I've looked a little bit at mod_backhand, which looks like it might do what we want ... are there any other simple tools available to handle this?

Right now we're simply using a PerlTransHandler on the front end server. I wouldn't mind a customized approach like this, but I don't know of a good, efficient way to get the info on the system load of the two backend servers.

--
 Ray Zimmerman  / e-mail: [EMAIL PROTECTED] / 428-B Phillips Hall
  Sr Research  /   phone: (607) 255-9645  /  Cornell University
   Associate  /      FAX: (815) 377-3932 /   Ithaca, NY  14853

Reply via email to