web-dev-qa-db-fra.com

Ubuntu php5-fpm lance une instance inconnue lors du rechargement

J'ai quelques problèmes avec Ubuntu et php5-fpm sur mon VPS . Php fonctionne bien, mais il génère une erreur de terminal lorsque j'essaie de le recharger/de le redémarrer/de l'arrêter. En gros, je ne peux pas arrêter php car il ne reconnaît pas l'instance

Il dit "reload: instance inconnue:" Si j'essaie de "redémarrer le service php5-fpm", il saisit une instance inconnue et l'indique dans les journaux

[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

J'ai l'écoute php sur /var/run/php5-fpm.sock; J'utilise nginx pour le serveur web et il est correctement configuré avec 

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

(ou alors je sais) Il faut aussi mentionner que cela s’est passé après un redémarrage.

Le site fonctionne bien, mais je ne pense pas que ce soit un bon signe. Des pensées? Merci.

EDIT: J'ai fait comme suggéré dans post ci-dessous. Il semble que si je tue le processus, puis que j'utilise start/stop, cela fonctionne bien. Cependant, après avoir utilisé la commande reload, il ne faut plus reconnecter l'instance.

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:

Edit 2: Mon php5 semble créer 3 processus

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

Lorsque j'utilise la fonction de rechargement, le processus principal disparaît et je dois tuer manuellement les 2 autres processus pour pouvoir le redémarrer correctement.

29
Iulian

C'est un bug d'Ubuntu. Dans /etc/init/php5-fpm.conf, il existe une ligne commentée-out reload signal USR2, qui force la fonction reload à mettre fin au processus maître php5-fpm en envoyant SIGHUP. Tous les rechargements, redémarrages ou arrêts ultérieurs échoueront, car le processus principal est terminé.

J'ai corrigé cela dans Ubuntu 14.04 en créant un fichier /etc/init/php5-fpm.override avec la ligne unique reload signal USR2 dans celui-ci. Crédits au commentaire de Jurian Sluiman dans this answer .

Voici le rapport de bogue primaire , les solutions de contournement proposées et la confirmation de la solution de contournement .

$ 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

Généralement, la commande service fera l'affaire:

service php5-fpm restart

Mais si le problème "instance inconnue" apparaît, vous pouvez simplement tuer les processus et faire redémarrer le service en utilisant cette ligne:

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

Essayez d'arrêter votre instance de php5-fpm de service php5-fpm stop à nouveau. Attends quelques secondes. Essayez de voir quels processus n'ont pas été arrêtés avec ps -ef. Terminez-les par kill <processId>. Redémarrez php5-fpm à nouveau . Il semble que tous les processus enfants ne se soient pas arrêtés correctement avec la commande service ... . J'ai des problèmes similaires sur le serveur, mais ils ne sont pas réguliers.

10
Mihail

J'ai eu le même problème avec Envoyer pour Laravel - et c'était assez énervant. Ma solution consistait à suivre l'option 3) à https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376/comments/16

Créez le fichier /etc/init/php5-fpm.override contenant la seule ligne "reload signal USR2".

5
Barnabas Kecskes

Déployer avec Envoyer m'a amené ici. J'ai fini par ajouter un point d'ancrage de déploiement "avant" à l'action Activer une nouvelle version avec le processus pkill php5-fpm

2
Graham T

L'option qui a fonctionné pour moi était de réinitialiser opcache. Créez un fichier opcache-reset.php dans le répertoire racine de votre site et ajoutez:

<?php opcache_reset(); ?>

Après avoir réinitialisé Opcache, vous pouvez supprimer le fichier ou le déplacer hors de la racine de votre site.

1
Kevin

On dirait que la commande service échoue parfois. Je ne sais pas pourquoi, mais j'ai finalement utilisé cette solution de contournement dans /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

Si aucune des réponses ci-dessus ne résout le problème, testez votre configuration pour voir vos erreurs:

$ php5-fpm -t

Dans la plupart des cas, vous avez probablement commis une erreur dans votre /etc/php5/fpm/php-fpm.conf ou /etc/php5/fpm/pool.d/www.conf

0
Paulo Coghi

Pour moi, il s’est avéré être une erreur dans le fichier de configuration du pool (chargé à partir du répertoire pool.d)

Essayez d’exécuter php-fpm7.0 -t pour exécuter configtest (le nom de l’exécutable peut varier en fonction de votre installation et du nom du service).

0
Bery