Re: don't retry a failed server

Alex Krohn <[email protected]> Fri, 14 May 2004 11:56:49 -0700
Newsgroups gmane.comp.apache.mod-backhand.general
Message-ID <[email protected]>
Hi,

> >I have a bit of a problem. If backhand sends a request to a server, and
> >the request fails, backhand tries to resend the request, but I can't
> >seem to get it to exclude the failed server. 
> >
> >Here's an example:
> >
> >[Fri May 14 22:20:47 2004] [notice] All funcs executed -> web2
> >..snip
> >[Fri May 14 22:20:47 2004] [error] mod_backhand: Tried... failed
> >..snip
> >[Fri May 14 22:20:47 2004] [notice] All funcs executed -> web2
> >
> >My conf looks like:
> >
> >        Backhand byAge
> >        BackHand byBusyChildren
> >        BackHand byRandom
> >        BackHand byLoad
> >        BackHand removeSelf
> >
> >(removeSelf as the main server only distributes requests to one of several mod_perl servers).
> >
> >I was playing with byRandom, and by putting it last, backhand will probably 
> >try a different server if the first one fails, but then you lose the 
> >distributing by load.
> >
> >Any ideas?
> >  
> >
> The first question is this:
> 
> mod_backhand is peer-based.  The byAge rule says to not use servers that 
> are not running (you haven't heard from in 5 seconds).  So, in the 
> example you gave, web2 is up, running and announcing that it is okay to 
> receive traffic.  So, why is web2 failing to service the request?

Thanks for the quick response! 

I'm forcing web2 to fail, by restarting the mod_perl server, and hitting
the cluster while the mod_perl server is restarting. Due to the amount
of code that is preloaded, and database connections setup, a mod_perl restart
takes about 10 seconds. 

I'm trying to make it so that I can restart all the mod_perl servers in
serial, without the user seeing anything (so if they happen to be sent
to a server that just got restarted, they will get sent to a new one).

Cheers,

Alex
--
Alex Krohn <[email protected]>