Project

General

Profile

Spawn-Manager-Protocol » History » Revision 2

Revision 1 (stbuehler, 2010-01-27 18:17) → Revision 2/3 (stbuehler, 2010-04-08 10:43)

h1. Spawn-Manager-Protocol 

 It would be nice to have a generic protocol between webservers and "spawn-managers". 
 The idea of a spawn-manager is to spawn backends (independent of the protocol used to connect to the backend - FastCGI, scgi, HTTP, ...) on demand. 

 "Phusion Passenger":http://www.modrails.com/ is one example for this - as far as i understood the concept the webserver (apache) connects to the spawn manager to request a backend; the spawn manager will return a socket to an available backend, to which the webserver connects to handle the request. 

 So here are some ideas how such a protocol could be designed. 

 * I think there are two ways to control how many backends are needed: either the webserver decides how many backends are needed or the spawn-manager. 
   If the spawn-manager has to decide, 

   
   * the webserver has to send regular updates to the spawn-manager (overhead?) 
   * one could use multiple web servers with the same spawn-manager 

   
   If the webserver decides, 
   * writing the spawn-manager is easier :) 
   * less overhead 
   * the protocol could easily be reused in the following scenario: 
     the spawn-manager spawns a php backend, which by default would run 1 child, so it can handle one request at a time. 
     if another backend is needed the spawn-manager could forward this request to the php master, which would fork another child; many opcode caches work best in this mode (one master, one shared cache, many children) - another master would mean another cache. 

   
   Perhaps both modes could be allowed by the protocol? 
 * The webserver should be allowed to reuse a previously received backend address as long as it doesn't disconnect from the spawn manager (or releases the backend) 
 * The spawn-manager should support spawning for different system users; this requires running the spawn-manager as root and to implement some security checks in the spawn-manager 

 I don't think authentication/encryption/... is needed; the protocol should be only used on trusted networks - or just with unix domain sockets.