You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Jess Holle <je...@ptc.com> on 2008/08/29 02:45:48 UTC

mod_proxy_balancer enhancements

I am looking for 2 things mod_proxy_balancer cannot currently provide:

   1. Something to limit the maximum impact of having many dead members
      under a load balancer on normal requests.
          * The process of discovering that dead workers are still dead
            shouldn't overtly impact any normal request (assuming there
            are live workers available)
          * Sample situation:
                o Load balancing over 10 ports, most of which do not
                  have an active backend (Tomcat) associated at the
                  time.  If there is only 1 backend alive, every 'retry'
                  seconds, a normal request is delayed by a period of
                  9*dead-connection-latency.  That's neither necessary
                  nor acceptable.
          * Possible solutions include:
                o Having an option to have a background thread ping the
                  backends rather than allowing normal requests to do so.
                      + In the case of mod_proxy_ajp, a cping would be
                        preferred here, rather than a full request.
                o Limiting the number of workers any single normal
                  request will attempt to recover
   2. Something to reduce the severity of log messages when discovering
      that a dead worker is still dead.
          * There is no need to fill the error logs with notices that a
            worker that has been dead is still dead.  This is good
            troubleshooting info and should be logged, but at a lower
            severity level that does not show up in the logs by default.
          * Depending on the solution to (1), this might just fall out
            of that.

I had already started a discussion along these lines on the Tomcat 
development mailing list, as I have the same needs for both 
mod_proxy_ajp (for Apache 2.2 front ends) and mod_jk/isapi (for IIS 
front ends).  Mladen Turk kindly pointed me to some work he had recently 
done on trunk for mod_jk to add a background "watchdog" thread for 
periodic background work.  He has also talked about adding a similar 
capability to Apache itself in the future.  Jim Jagielski pointed out 
that the discussion should probably move over here as portions have 
impact on Apache itself.

I need solutions to these problems one way or another, so if nothing 
else I'll have to hack in something into our own fork of the code.

I have a fair amount of time to solve these problems, however, so I'd 
much rather see them solved in a good, general way that can be a 
value-add part of both mod_jk and mod_proxy -- rather than a one-off 
fork.  Ideally the solutions would be somewhat consistent as well, for 
everyone's sanity.

Thoughts?  Suggestions?

--
Jess Holle


Re: mod_proxy_balancer enhancements

Posted by "Akins, Brian" <Br...@turner.com>.
On 8/28/08 8:45 PM, "Jess Holle" <je...@ptc.com> wrote:

> Possible solutions include:
> Having an option to have a background thread ping the backends rather than
> allowing normal requests to do so.


One way to possibly do this is to have a single "health checking" that's in
the parent that can "notify" children of origin server changes.  Could just
be setting some flags in shared memory.  The health-checker could be an
external process managed like a logger as well or just forked from parent.

-- 
Brian Akins
Chief Operations Engineer
Turner Digital Media Technologies