Supervisor adicionando vários processos para PHP e Gearman

Recentemente, configurei o Ubuntu Natty com PHP5-FPM, Gearman e Supervisor. Eu editei minha configuração Supervisord para executar um trabalhador Gearman.

[program:gearman] command=/usr/bin/php php_gearman_worker.php numprocs=1 directory=/root/sandbox stdout_logfile=/root/sandbox/supervisord.log environment=GEARMAN_USER=gearman autostart=true autorestart=true user=gearman 

Aqui estão as informações relevantes (mostrando apenas os processos gearmand e php) quando eu lsof -i -P antes de executar o supervisor:

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME gearmand 29314 gearman 6u IPv4 328139 0t0 TCP localhost:4730 (LISTEN) 

E aqui está o que eu recebo quando eu lsof -i -P depois de eu /etc/init.d/supervisor stop && /etc/init.d/supervisor start .

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME gearmand 29314 gearman 6u IPv4 328139 0t0 TCP localhost:4730 (LISTEN) gearmand 29314 gearman 11u IPv4 328206 0t0 TCP localhost:4730->localhost:39072 (ESTABLISHED) php 29571 gearman 4u IPv4 329744 0t0 TCP localhost:39072->localhost:4730 (ESTABLISHED) 

Eu não vejo nenhuma listview para o próprio supervisor, devo ver o supervisor como um dos comandos ?!

De qualquer forma, quando eu parar e começar (ou reiniciar) supervisor novamente:

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME gearmand 29314 gearman 6u IPv4 328139 0t0 TCP localhost:4730 (LISTEN) gearmand 29314 gearman 11u IPv4 328206 0t0 TCP localhost:4730->localhost:39072 (ESTABLISHED) gearmand 29314 gearman 12u IPv4 329754 0t0 TCP localhost:4730->localhost:51570 (ESTABLISHED) php 29571 gearman 4u IPv4 329744 0t0 TCP localhost:39072->localhost:4730 (ESTABLISHED) php 29619 gearman 4u IPv4 327233 0t0 TCP localhost:51570->localhost:4730 (ESTABLISHED) 

Parece que com cada vez que paro e começo o supervisor, ele cria outro processo de php e depois outro. É só quando eu reiniciar o gearmand que vai voltar ao normal, ou seja, /etc/init.d/gearman-job-server stop && /etc/init.d/gearman-job-server start .

Isso parece anormal para mim ser que, quando paro o supervisor, é suposto parar

Esta é a maneira como o supervisor funciona ?! Existe uma maneira de evitar que isso aconteça ?!

Desde já, obrigado.

EDITAR

Descobri o que estava causando o problema. Foi um pequeno conflito com o comando supervisord.conf e meu script de boot.

Meu arquivo supervisord.conf tinha as seguintes configurações:

 pidfile=/tmp/supervisord.pid 

Mas meu script init em /etc/init.d/supervisord teve a seguinte configuração:

 NAME=supervisord PIDFILE=/var/run/$NAME.pid 

Então, eu apenas alterei a configuração em supervisord.conf para combinar o que estava no meu script de boot.

Além disso, eu adicionei stopsignal=KILL à configuração do programa no meu arquivo de configuração do supervisor (supervisord.conf).

Obrigado a Minaz pela direção.

    Eu sempre incluo a opção de configuração stopignal para os meus arquivos de configuração do supervisor. Isso permite que o processo gearman seja morto quando uma parada é solicitada. Tente isso:

     [program:gearman] command=/usr/bin/php php_gearman_worker.php numprocs=1 directory=/root/sandbox stdout_logfile=/root/sandbox/supervisord.log environment=GEARMAN_USER=gearman autostart=true autorestart=true user=gearman stopsignal=KILL