web-dev-qa-db-ja.com

Ubuntu php5-fpmはリロード時に不明なインスタンスをスローします

VPSでubuntuとphp5-fpmに問題があります。 PHPは正常に動作しますが、リロード/再起動/停止しようとするとターミナルエラーがスローされます。基本的に、インスタンスを認識しないため、phpを停止できません。

「reload:Unknown instance:」と表示されます。「service php5-fpm restart」を試すと、不明なインスタンスと表示され、ログに記録されます

[15-Nov-2013 11:56:40] ERROR: An another FPM instance seems to already listen on /var/run/php5-fpm.sock
[15-Nov-2013 11:56:40] ERROR: FPM initialization failed
[15-Nov-2013 11:56:40] NOTICE: configuration file /etc/php5/fpm/php-fpm.conf test is successful

/var/run/php5-fpm.sockをリッスンするphpがあります。私はウェブサーバーにnginxを使用していますが、正しく設定されています

fastcgi_pass unix:/var/run/php5-fpm.sock;

(または私が知っている)また、これは再起動後に起こったことに言及する必要があります。

サイトはうまく機能していますが、これは良い兆候ではないと思います。何かご意見は ?ありがとうございました。

編集:私は以下の投稿で提案されたようにしました。プロセスを強制終了し、開始/停止を使用すると正常に動作するようです。ただし、reloadコマンドを使用すると、インスタンスの認識が停止します。

root@developer2:/# service php5-fpm stop
stop: Unknown instance:
root@developer2:/# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Nov14 ?        00:00:00 init
root      1101     1  0 Nov14 ?        00:00:00 /sbin/udevd --daemon
root      1168     1  0 Nov14 ?        00:00:00 /usr/sbin/sshd -D
root      1227     1  0 Nov14 ?        00:00:00 /usr/sbin/xinetd -dontfork -pidfile /var/run/xinetd.pid -stayalive -inetd_compa
root      1229     1  0 Nov14 ?        00:00:00 cron
mysql     1249     1  0 Nov14 ?        00:00:18 /usr/sbin/mysqld
syslog    1283     1  0 Nov14 ?        00:00:00 /sbin/syslogd -u syslog
memcache  1293     1  0 Nov14 ?        00:00:07 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1
root      1426     1  0 Nov14 ?        00:00:00 /usr/lib/postfix/master
postfix   1440  1426  0 Nov14 ?        00:00:00 qmgr -l -t fifo -u
root      1468     1  0 Nov14 ?        00:00:00 /usr/sbin/varnishd -P /var/run/varnishd.pid -a :80 -T localhost:6082 -f /etc/va
nobody    1469  1468  0 Nov14 ?        00:01:14 /usr/sbin/varnishd -P /var/run/varnishd.pid -a :80 -T localhost:6082 -f /etc/va
root      1593     1  0 Nov14 ?        00:00:14 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock
root      1595     1  0 Nov14 ?        00:00:00 /usr/lib/gamin/gam_server
www-data  3535     1  0 Nov14 ?        00:00:30 php-fpm: pool www
postfix  10016  1426  0 11:18 ?        00:00:00 pickup -l -t fifo -u -c
root     10064  1168  0 11:37 ?        00:00:00 sshd: root@pts/0
root     10080 10064  0 11:37 pts/0    00:00:00 -bash
root     10143  1168  0 11:47 ?        00:00:00 sshd: root@notty
root     10159 10143  0 11:47 ?        00:00:00 /usr/lib/openssh/sftp-server
root     11330     1  0 12:03 ?        00:00:00 nginx: master process /usr/sbin/nginx
www-data 11331 11330  0 12:03 ?        00:00:00 nginx: worker process
www-data 11332 11330  0 12:03 ?        00:00:00 nginx: worker process
www-data 11333 11330  0 12:03 ?        00:00:00 nginx: worker process
www-data 11334 11330  0 12:03 ?        00:00:00 nginx: worker process
root     11465  1168  0 12:14 ?        00:00:00 sshd: root@notty
root     11481 11465  0 12:14 ?        00:00:00 /usr/lib/openssh/sftp-server
root     11519 10080  0 12:23 pts/0    00:00:00 ps -ef
root@developer2:/# kill 3535
root@developer2:/# service php5-fpm start
php5-fpm start/running, process 11529
root@developer2:/# service php5-fpm stop
php5-fpm stop/waiting
root@developer2:/# service php5-fpm start
php5-fpm start/running, process 11544
root@developer2:/# service php5-fpm stop
php5-fpm stop/waiting
root@developer2:/# service php5-fpm start
php5-fpm start/running, process 11559
root@developer2:/# service php5-fpm reload
root@developer2:/# service php5-fpm reload
reload: Unknown instance:

編集2:私のphp5は3つのプロセスを作成するようです

root     11813     1  1 12:34 ?        00:00:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 11815 11813  0 12:34 ?        00:00:00 php-fpm: pool www
www-data 11816 11813  0 12:34 ?        00:00:00 php-fpm: pool www

リロード機能を使用すると、マスタープロセスが消え、他の2つのプロセスを手動で強制終了して、正しく再起動する必要があります。

29
Iulian

これはUbuntuのバグです。 /etc/init/php5-fpm.confには、コメントアウトされた行_reload signal USR2_があります。これにより、SIGHUPを送信してリロード機能がphp5-fpmマスタープロセスを終了します。マスタープロセスが終了しているため、それ以上のリロード、再起動、または停止は失敗します。

これをUbuntu 14.04で修正し、ファイル_/etc/init/php5-fpm.override_に単一行_reload signal USR2_を含めて作成しました。 この回答 のJurian Sluimanのコメントの功績。

プライマリバグレポート提案された回避策 、および 回避策の確認 です。

_$ ps aux | grep php
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1966  0.0  0.9 473276 37040 ?        Ss   10:03   0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)                    
www-data  2009  0.0  1.5 478280 62500 ?        S    10:03   0:01 php-fpm: pool www                                                       
www-data  2011  0.0  1.3 476504 55220 ?        S    10:03   0:00 php-fpm: pool www                                                       
www-data  2012  0.0  1.6 481592 65840 ?        S    10:03   0:00 php-fpm: pool www

$ Sudo service php5-fpm status
php5-fpm start/running, process 1966

$ Sudo service php5-fpm stop
php5-fpm stop/waiting

$ Sudo service php5-fpm status
php5-fpm stop/waiting

$ Sudo service php5-fpm start
php5-fpm start/running, process 2651

$ Sudo service php5-fpm status
php5-fpm start/running, process 2651

$ ps aux | grep php
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      2651  0.2  0.9 473276 36996 ?        Ss   10:35   0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)                    
www-data  2654  0.0  0.1 473276  7104 ?        S    10:35   0:00 php-fpm: pool www                                                       
www-data  2655  0.0  0.1 473276  7104 ?        S    10:35   0:00 php-fpm: pool www                                                       
www-data  2656  0.0  0.1 473276  7104 ?        S    10:35   0:00 php-fpm: pool www
_
42
keithm

通常、serviceコマンドで問題ありません。

service php5-fpm restart

ただし、「不明なインスタンス」の問題が発生した場合は、次の行を使用してプロセスを強制終了し、サービスを再起動できます。

Sudo pkill php5-fpm; Sudo service php5-fpm start
32
BurninLeo

service php5-fpm stopでphp5-fpmインスタンスをもう一度停止してください。数秒待ちます。 ps -efを使用して終了していないプロセスを確認してください。 kill <processId>でそれらを終了します。 php5-fpmを再度起動します。 service ...コマンドによってすべての子プロセスが適切に終了されたわけではないようです。私はサーバー上で同様の問題を抱えていますが、それらは定期的ではありません

10
Mihail

私はEnvoyer for Laravelを使用して同じ問題を経験しましたが、それは非常に迷惑でした。私の解決策は https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376/comments/16 でオプション3)に従うことでした

「reload signal USR2」という単一行を含む/etc/init/php5-fpm.overrideファイルを作成します。

5

Envoyerで展開すると、ここに来ました。 pkill php5-fpmプロセスを使用して、 'before'デプロイメントフックをActivate New Releaseアクションに追加することになりました

2
Graham T

私のために働いたオプションは、opcacheをリセットすることでした。サイトルートにopcache-reset.phpファイルを作成し、以下を追加します。

<?php opcache_reset(); ?>

Opcacheをリセットした後、ファイルを削除するか、サイトルートから移動できます。

1
Kevin

serviceコマンドが時々失敗するようです。その理由はわかりませんが、/etc/logrotate.d/php5-fpm

/var/log/php5-fpm.log {
    ...
    postrotate
        # The original reload command did never work
        #invoke-rc.d php5-fpm reopen-logs > /dev/null

        # Workaround for cases when the reload command fails for some reason
        service php5-fpm reload > /dev/null 2>&1
        [ $? = 0 ] || ( service php5-fpm stop; pkill php5-fpm; service php5-fpm start ) > /dev/null
    endscript
}
1
stucki

上記の回答のいずれでも問題が解決しない場合、設定をテストして間違いを確認します。

$ php5-fpm -t

私はほとんどの場合、おそらく/etc/php5/fpm/php-fpm.confまたは/etc/php5/fpm/pool.d/www.conf

0
Paulo Coghi

私にとっては、プール設定ファイルのエラーであることが判明しました(pool.dディレクトリからロードされました)

php-fpm7.0 -tを実行してconfigtestを実行してみてください(実行可能ファイルの名前は、インストールとサービスの名前によって異なる場合があります)

0
Bery