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).
Спасибо Миназ за руководство.