最近、PHP5-FPM、Gearman、Supervisorを使用してUbuntuNattyをセットアップしました。Gearmanワーカーを実行するようにSupervisord構成を編集しました。
[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
lsof -i -P
スーパーバイザーを実行する前の関連情報(gearmandプロセスとphpプロセスのみを表示)は次のとおりです。
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)
監視対象自体のリストが表示されません。監視対象をコマンドの1つとして表示する必要がありますか?!
とにかく、私が停止して再開(または再起動)すると、監視対象は次のようになります。
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)
監視を停止して開始するたびに、別のphpプロセスが作成され、次に別のプロセスが作成されるようです。ギアマンドを再起動したときだけ、通常の状態に戻り/etc/init.d/gearman-job-server stop && /etc/init.d/gearman-job-server start
ます。
これは私には異常に思えます。私が監督をやめると、それはやめることになっているということです。
これは監視対象の動作方法ですか?!これを防ぐ方法はありますか?!
前もって感謝します。
編集
問題の原因を突き止めました。これは、supervisord.confおよび私のinitスクリプトとの小さな競合でした。
私のsupervisord.confファイルには次の設定がありました。
pidfile=/tmp/supervisord.pid
しかし、私のinitスクリプトに/etc/init.d/supervisord
は次の設定がありました。
NAME=supervisord
PIDFILE=/var/run/$NAME.pid
そのため、supervisord.confの設定を、initスクリプトの設定と一致するように変更しました。
stopsignal=KILL
また、 supervisord構成ファイル(supervisord.conf)のプログラム構成に追加しました。
指示してくれたミナズに感謝します。