當前位置: 首頁>>技術教程>>正文


Ubuntu php5-fpm重新加載時拋出未知實例

, ,

問題描述

我的VPS上存在ubuntu和php5-fpm的問題。 PHP工作正常,但是當我嘗試重新加載/重新啟動/停止它時,它將引發終端錯誤。基本上,我無法停止php,因為它無法識別實例

它說“重新加載:未知實例:”如果我嘗試“ 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用於Web服務器,並且已正確配置

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個進程才能正確重新啟動它。

最佳回答

這是一個Ubuntu錯誤。在/etc/init/php5-fpm.conf中,存在commented-out行reload signal USR2,這導致重載函數通過發送SIGHUP終止php5-fpm主進程。任何進一步的重新加載,重新啟動或停止都將失敗,因為主進程已終止。

我在Ubuntu 14.04中通過創建文件/etc/init/php5-fpm.override和單行reload signal USR2來解決此問題。感謝Jurian Sluiman在this answer中的評論。

這是primary bug reportproposed workaroundsconfirmation of workaround

$ 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

次佳回答

通常,service命令會很好:

service php5-fpm restart

但是,如果出現”unknown instance”問題,您可以使用以下命令殺死進程並重新啟動服務:

sudo pkill php5-fpm; sudo service php5-fpm start

第三種回答

嘗試再次通過service php5-fpm stop停止您的php5-fpm實例。等待幾秒鍾。嘗試查看哪些進程沒有使用ps -ef終止。用kill <processId>終止它們。再次啟動php5-fpm。似乎並非所有子進程都已通過service ...命令正確終止。我在服務器上有類似的問題,但是它們不是正常的

第四種回答

我在使用Envoyer for Laravel時遇到了相同的問題-這很煩人。我的解決方案是遵循https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376/comments/16的選項3)

Create /etc/init/php5-fpm.override file with the single line “reload signal USR2” in it.

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/8991.html,未經允許,請勿轉載。