it-swarm.com.ru

Ubuntu php5-fpm выбрасывает неизвестный экземпляр при перезагрузке

У меня проблемы с Ubuntu и php5-fpm на моем VPS . 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

У меня есть прослушивание php на /var/run/php5-fpm.sock; Я использую nginx для веб-сервера, и он правильно настроен с 

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

(или так я знаю) Также нужно упомянуть, что это произошло после перезагрузки.

Сайт работает хорошо, но я не думаю, что это хороший знак. Есть мысли? Спасибо.

Правка: я сделал, как предложено в посте ниже. Кажется, что если я убью процесс, а затем использую start/stop, он будет работать нормально. Тем не менее, после того, как я использую команду reload, он прекращает повторную настройку экземпляра.

[email protected]:/# service php5-fpm stop
stop: Unknown instance:
[email protected]:/# 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: [email protected]/0
root     10080 10064  0 11:37 pts/0    00:00:00 -bash
root     10143  1168  0 11:47 ?        00:00:00 sshd: [email protected]
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: [email protected]
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
[email protected]:/# kill 3535
[email protected]:/# service php5-fpm start
php5-fpm start/running, process 11529
[email protected]:/# service php5-fpm stop
php5-fpm stop/waiting
[email protected]:/# service php5-fpm start
php5-fpm start/running, process 11544
[email protected]:/# service php5-fpm stop
php5-fpm stop/waiting
[email protected]:/# service php5-fpm start
php5-fpm start/running, process 11559
[email protected]:/# service php5-fpm reload
[email protected]:/# service php5-fpm reload
reload: Unknown instance:

Edit 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, которая заставляет функцию reload завершить главный процесс php5-fpm, отправив SIGHUP. Любые дальнейшие перезагрузки, перезапуски или Остановка будут неудачными, потому что основной процесс был завершен.

Я исправил это в Ubuntu 14.04, создав файл /etc/init/php5-fpm.override с одной строкой reload signal USR2. Кредиты на комментарий Юриана Слуймана в этот ответ .

Вот основной отчет об ошибке , предлагаемые обходные пути и подтверждение обходного пути .

$ 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

Попробуйте остановить свой экземпляр php5-fpm с помощью service php5-fpm stop снова. Подождите несколько секунд. Попробуйте посмотреть, какие процессы не были прерваны с помощью ps -ef. Прекратить их с помощью kill <processId>. Запустите php5-fpm еще раз . Кажется, не все дочерние процессы были правильно завершены с помощью команды service ... . У меня есть похожие проблемы на сервере, но они не являются регулярными

10
Mihail

Я столкнулся с той же проблемой, используя Envoyer для Laravel - и это было довольно неприятно. Мое решение состояло в том, чтобы следовать варианту 3) в https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376/comments/16

Создайте файл /etc/init/php5-fpm.override с одной строкой «сигнал перезагрузки USR2».

5
Barnabas Kecskes

Развертывание с Envoyer привело меня сюда. В итоге я добавил хук развертывания «до» в действие «Активировать новый выпуск» с помощью процесса pkill php5-fpm

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