Supervisord can do all this and more. It's a full service process manager that can manage daemons in any language, including pools of FastCGI processes.<br><br><a href="http://supervisord.org/" target="_blank">http://supervisord.org/</a><br>
<br>It has an XML-RPC interface and cmd line tool (supervisorctl) so you can send commands to the process manager as it's running (for example, starting and stopping a given process or process pool). It even has a language-agnostic event listening API so that you can monitor process manager events and take your own custom actions (such as sending yourselves alerts if a process dies).<br>
<br>Here's a sample config for managing a pool of 5 foo.pl processes and 2 bar.pl processes.<br><br> [fcgi-program:foo]<br> socket=tcp://<a href="http://127.0.0.1:4000">127.0.0.1:4000</a><br> process_name = %(program_name)s_%(process_num)s<br>
command = /path/to/foo.pl<br> numprocs = 5<br><br> [fcgi-program:bar]<br> socket=unix:///path/to/fcgi/socket<br> process_name = %(program_name)s_%(process_num)s<br> command = /path/to/bar.pl<br>
numprocs = 2<br><br>The FCGI spawning has not been officially released but it's well unit tested in the SVN repo. Just run easy_install <a href="http://svn.supervisord.org/supervisor/trunk/">http://svn.supervisord.org/supervisor/trunk/</a><br>
<br><div class="gmail_quote">On Sat, Feb 28, 2009 at 2:03 PM, mike <span dir="ltr"><<a href="mailto:mike503@gmail.com" target="_blank">mike503@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
fcgiwrap is slowly becoming a must have in my toolbox :)<br>
<br>
hopefully soon i will start using it in production. want to get<br>
comfortable with it first.<br>
<br>
On Sat, Feb 28, 2009 at 4:17 AM, Grzegorz Nosek<br>
<div><<a href="mailto:grzegorz.nosek@gmail.com" target="_blank">grzegorz.nosek@gmail.com</a>> wrote:<br>
</div><div><div></div><div>> On czw, lut 26, 2009 at 02:20:18 -0800, mike wrote:<br>
>> oh, dur. I would need one<br>
>><br>
>> spawn-fcgi fcgiwrap etc ...<br>
>><br>
>> for -every- "child" instance available. since it only does PHP<br>
>> children itself, yeah?<br>
><br>
> It's your lucky day ;) Grab a new fcgiwrap snapshot and run it like:<br>
><br>
> spawn-fcgi (...) -- fcgiwrap -c 10<br>
><br>
> to have 10 processes preforked (the pool has a static size). This code<br>
> is rather experimental (may not survive a kill-all-children-in-a-tight-loop<br>
> test) but looks like it's working.<br>
><br>
> Best regards,<br>
> Grzegorz Nosek<br>
><br>
><br>
<br>
</div></div></blockquote></div><br>