Supervisord добавление нескольких процессов для PHP и Gearman

Недавно я установил Ubuntu Natty с PHP5-FPM, Gearman и Supervisor. Я отредактировал свою конфигурацию Supervisord для запуска работника 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

Вот соответствующая информация (показывающая только процессы gearmand и php), когда яlsof -i -P перед тем, как запустить Supervisord:

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

И вот что я получаю, когдаlsof -i -P после того как я/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)

Я не вижу никакой записи для самого supervisord, я должен видеть supervisord как одну из команд ?!

В любом случае, когда я останавливаюсь и снова запускаю (или перезапускаю) супервизор:

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)

Похоже, что каждый раз, когда я останавливаюсь и запускаю supervisord, он создает другой процесс php, а затем другой. Только когда я перезагружаю механизм, он возвращается в нормальное состояние, т.е./etc/init.d/gearman-job-server stop && /etc/init.d/gearman-job-server start.

Мне кажется, это ненормально, когда я прекращаю надзор

Так ли работает супервизор ?! Есть ли способ, которым я могу предотвратить это ?!

Заранее спасибо.

РЕДАКТИРОВАТЬ

Я выяснил, в чем причина проблемы. Это был небольшой конфликт с supervisord.conf и моим скриптом инициализации.

Мой файл supervisord.conf имел следующие настройки:

pidfile=/tmp/supervisord.pid

Но мой сценарий инициализации в/etc/init.d/supervisord имел следующую настройку:

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

Поэтому я просто изменил настройку в supervisord.conf, чтобы она соответствовала тому, что было в моем скрипте инициализации.

Также я добавилstopsignal=KILL к конфигурации программы в моем файле конфигурации супервизора (supervisord.conf).

Спасибо Миназ за руководство.

Ответы на вопрос(1)

Ваш ответ на вопрос