I’m having a setup on Gentoo, Apache 2.2.6 with
a setup that relies on mox_proxy_balancer: Apache is the proxy and proxies
request to 3 workers (in fact, Mongrel which is a basic HTTP server). Rewriting rules are in places and on normal use no
issues, so I guess the setup is correct. In my testing enviroment (i.e. I have full control
over de requests sent to the setup), I experience the following: Setup A: <Proxy balancer://ips.dev.test_setup.com.mongrel_cluster>
BalancerMember http://localhost:8010
BalancerMember http://localhost:8011
BalancerMember http://localhost:8012 </Proxy> I request an action that takes a long time to execute
(10 minutes). This is for testing purposes. Than I fire subsequents requests
with normal execution time (< 1 second). The results are: -
worker 8010 gets the first
long request and starts handling this -
worker 8011 and 8012 get
the next two requests -
request 4 is proxied to
8010 where it has to wait for the long request to finish before it gets served. This is expected behaviour. Next, I’ve changed the configuration to Setup B: <Proxy balancer://ips.dev.test_setup.com.mongrel_cluster>
BalancerMember http://localhost:8010 max=1
BalancerMember http://localhost:8011 max=1
BalancerMember http://localhost:8012 max=1 </Proxy> I’m repeating the experiment. The results are
the same as in setup A. In my opinion this is unexpected behaviour: 8010 gets
the first long request and while serving this, it should not get any subsequent
request. The other workers should handle the subsequent requests. (I fire the request
by hand, with a large enough interval to get a free worker available). More-over
if I look in the balancer-manager, all workers have state Ok. I would expect to
see a state Busy (or something like that for 8010). Are my assumptions correct about the effect the max
parameter should have? Any experiencing the same problems? Effectively, I’m looking for a solution that
one ‘bad performance’ thread does not hurt the overall response Any help greatly appreciated. Regards, Toon |