On Mon, 29 Oct 2007 16:27:49 -0400
Robert Mela <[EMAIL PROTECTED]> wrote:

>  > When mongrel was working, it should send the reply back to LSWS 
> before closing the socket.
> 
> There's a string prepared for the purpose in mongre.rb
> 
>     ERROR_503_RESPONSE="HTTP/1.1 503 Service Unavailable\r\n\r\nBUSY".freeze
> 
> It's a one-liner to send that to the socket before calling close.

No, that's not the best way to do this.  Think for a minute.  Mongrel is 
overloaded.  It's having a hard time sending data.  Now you want it to waste 
more time sending data?  

The general practice that works best is when a server is overloaded it aborts 
connections it can't handle in order to get some free time to service more 
requests.  This way existing pending requests get some service and in a load 
balancing situation the server can move on to the next available backend.  The 
alternative in trying to handle all requests, even with small responses, will 
mean that nobody gets service.

In reality, I bet that LSWS doesn't try to move on to the next backend when the 
connection is aborted.  If you think about this also, it means that when LSWS 
is behaving as a proxy, and one of your backends goes down, then LSWS won't 
adapt and will instead complain to the user.

A properly functioning proxy server that is behaving as a load balancer should 
try all servers possible several times until it either gets a response or has 
to give up because everything is down and/or it is overloaded as well.

-- 
Zed A. Shaw
- Hate: http://savingtheinternetwithhate.com/
- Good: http://www.zedshaw.com/
- Evil: http://yearofevil.com/
_______________________________________________
Mongrel-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/mongrel-users

Reply via email to