Ubuntu php5-fpm выдает неизвестный экземпляр при перезагрузке
У меня возникают проблемы с ubuntu и php5-fpm на моем VPS.
Php работает нормально, однако при попытке перезагрузки/перезапуска/остановки он вызывает ошибку терминала. В принципе, я не могу остановить php, потому что он не распознает экземпляр
В нем говорится: "Перезагрузка: Неизвестный экземпляр:"
Если я попробую "перезапустить службу php5-fpm", это неизвестный экземпляр sais и дает это в журналах
[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/php 5-fpm.sock;
Я использую nginx для веб-сервера и правильно настроен с помощью
fastcgi_pass unix:/var/run/php5-fpm.sock;
(или так я знаю)
Также нужно упомянуть, что это произошло после перезагрузки.
Сайт работает хорошо, однако я не думаю, что это хороший знак. Есть предположения?
Спасибо.
РЕДАКТИРОВАТЬ: Я сделал, как было предложено в следующем сообщении. Кажется, что если я убью этот процесс, а затем начну/остановимся, он отлично работает. Однако после того, как я использую команду 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:
Изменить 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 процесса, чтобы иметь возможность правильно запустить его снова.
Ответы
Ответ 1
Это ошибка Ubuntu. В /etc/init/php 5-fpm.conf есть строка с комментариями reload signal USR2
, которая заставляет функцию перезагрузки завершить мастер-процесс 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
Ответ 2
Как правило, команда service
будет работать нормально:
service php5-fpm restart
Но если проблема с "неизвестным экземпляром" появляется, вы можете просто убить процессы и перезапустить службу, используя эту строку:
sudo pkill php5-fpm; sudo service php5-fpm start
Ответ 3
Попробуйте снова остановить экземпляр php5-fpm с помощью service php5-fpm stop
. Подождите несколько секунд. Попытайтесь увидеть, какие процессы не были прерваны с помощью ps -ef
. Завершите их с помощью kill <processId>
. Запустите php5-fpm снова.
Кажется, не все дочерние процессы были правильно завершены командой service ...
.
У меня схожие проблемы на сервере, но они не являются регулярными
Ответ 4
Я столкнулся с той же проблемой, используя Envoyer для Laravel - и это было очень неприятно. Мое решение состояло в том, чтобы следовать варианту 3) на https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376/comments/16
Создайте файл /etc/init/php 5-fpm.override с помощью одной строки "перезагрузить сигнал USR2".
Ответ 5
Кажется, что команда 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
}
Ответ 6
Вариант, который работал у меня, был reset opcache. Создайте файл opcache- reset.php в корне сайта и добавьте:
<?php opcache_reset(); ?>
После перезапуска opcache вы можете удалить файл или перенести его из корневого сайта.
Ответ 7
Развертывание с Посланником привело меня сюда. Я завершил добавление "до" развертывания в действие "Активировать новую версию" с помощью процесса pkill php5-fpm
Ответ 8
Если ни один из приведенных выше ответов не решает проблему, проверьте свою конфигурацию, чтобы увидеть свои ошибки:
$ php5-fpm -t
В большинстве случаев вы, вероятно, допустили ошибку в /etc/php5/fpm/php-fpm.conf
или /etc/php5/fpm/pool.d/www.conf
Ответ 9
Для меня это оказалось ошибкой в файле конфигурации пула (загружаемом из каталога pool.d)
Попробуйте запустить php-fpm7.0 -t
для запуска configtest (имя исполняемого файла может отличаться в зависимости от вашей установки и имени службы)