Ryan Dahl <[email protected]> wrote:
> Eric,
> 
> this sounds great.
> 
> what would you think of adding an option to allow the server to
> connect to one (or more?) unix pipes for process restart instructions?
> i'd love to add a nginx module which notices when a backend is
> responding too slowly and can notify Unicorn to restart it. (this is
> the killer feature of passenger phusion.)
> 
> a simple protocol where a single byte message encodes the index of the
> backend that needs to be restarted would work i think (easy to
> multiplex with multiple writer processes)

Hi Ryan,

Something like this should already be doable via various means

Workers already process SIGQUIT to gracefully stop; so I'd rather not
reinvent that part even with a very simple protocol.

The master process already notices when timeout is expired and sends
SIGKILL to workers.  I could add a :soft_timeout config and have it send
SIGQUIT to workers if a lower timeout is reached.

On the other hand, I could see implementing soft_timeout having
statistics+heuristics, being URL/action-aware.  So IMHO this could be
more completely implemented as a separate package that watches the logs
via `tail -F`.  That way one can define which actions are allowed
to take longer without affecting the timeout (connecting to external
services for example).

As much as I love nginx, I'm really not a fan of adding modules and
increasing the complexity of the nginx process.  Yeah, I'm pretty
firmly on the "cat -v considered harmful" side of the fence :)

-- 
Eric Wong
_______________________________________________
Mongrel-development mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/mongrel-development

Reply via email to