Ich habe einige Probleme mit Ubuntu und PHP5-Fpm auf meiner VPS . PHP funktioniert gut, aber es wirft einen Terminalfehler, wenn ich versuche, es neu zu laden/neu starten/stoppen. Grundsätzlich kann ich PHP nicht stoppen, da die Instanz nicht erkannt wird
Es heißt "reload: Unknown instance:" Wenn ich "service php5-fpm restart" versuche, wird dies als unbekannte Instanz bezeichnet und in Protokollen angegeben
[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
Ich habe PHP auf /var/run/php5-fpm.sock zu hören; Ich benutze nginx für den Webserver und es ist korrekt mit konfiguriert
fastcgi_pass unix:/var/run/php5-fpm.sock;
(oder so weiß ich) Außerdem muss erwähnt werden, dass dies nach einem Neustart der Fall war.
Die Website funktioniert gut, aber ich denke nicht, dass dies ein gutes Zeichen ist. Irgendwelche Gedanken? Danke.
EDIT: Ich habe wie unten im Post vorgeschlagen. Es scheint, dass wenn ich den Prozess töte und dann start/stop verwende, es gut funktioniert. Nachdem ich den Befehl zum erneuten Laden verwendet habe, wird die Instanz nicht mehr aktualisiert.
[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: Mein PHP 5 scheint 3 Prozesse zu erzeugen
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
Wenn ich die Reload-Funktion verwende, verschwindet der Master-Prozess und ich muss die beiden anderen Prozesse manuell beenden, um ihn wieder korrekt starten zu können.
Dies ist ein Ubuntu-Fehler. In /etc/init/php5-fpm.conf gibt es eine auskommentierte Zeile reload signal USR2
, die bewirkt, dass die reload-Funktion den php5-fpm-Masterprozess durch Senden von SIGHUP beendet. Alle weiteren Neuladen, Neustarts oder Stopps werden fehlschlagen, da der Masterprozess beendet wurde.
Ich habe dies in Ubuntu 14.04 behoben, indem ich eine Datei /etc/init/php5-fpm.override
mit der einzelnen Zeile reload signal USR2
darin erstellt habe. Dank an Jurian Sluimans Kommentar in diese Antwort .
Hier ist der primäre Fehlerbericht , vorgeschlagene Abhilfemaßnahmen und Bestätigung der Abhilfe .
$ 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
Normalerweise funktioniert der Befehl service
gut:
service php5-fpm restart
Wenn jedoch das Problem "unbekannte Instanz" auftritt, können Sie einfach die Prozesse beenden und den Dienst neu starten.
Sudo pkill php5-fpm; Sudo service php5-fpm start
Versuchen Sie, Ihre php5-fpm-Instanz erneut mit service php5-fpm stop
zu beenden. Warten Sie einige Sekunden. Versuchen Sie herauszufinden, welche Prozesse nicht mit ps -ef
beendet wurden. Beenden Sie sie mit kill <processId>
. Starten Sie php5-fpm erneut . Es scheint, dass nicht alle untergeordneten Prozesse ordnungsgemäß mit service ...
-Befehl ..__ beendet wurden. Ich habe ähnliche Probleme mit dem Server, aber sie sind nicht regelmäßig
Ich habe das gleiche Problem mit ENVOYER FOR LARAVEL erlebt - und das war ziemlich ärgerlich. Meine Lösung bestand darin, Option 3 zu folgen: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376/comments/16
Erstellen Sie die Datei /etc/init/php5-fpm.override mit der einzeiligen Zeile "reload signal USR2".
Die Bereitstellung bei Envoyer brachte mich hierher. Am Ende fügte ich der Activate New Release-Aktion mit dem pkill php5-fpm
-Prozess einen 'before'-Implementierungshaken hinzu
Die Option, die für mich funktionierte, war das Zurücksetzen von Opcache. Erstellen Sie eine Datei opcache-reset.php in Ihrem Site-Stamm und fügen Sie Folgendes hinzu:
<?php opcache_reset(); ?>
Nach dem Zurücksetzen von opcache können Sie die Datei löschen oder aus dem Site-Stamm verschieben.
Scheint, als ob der Befehl service
manchmal fehlschlägt. Ich weiß nicht, aus welchem Grund ich diese Problemumgehung in /etc/logrotate.d/php5-fpm
verwendet habe:
/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
}
Wenn keine der obigen Antworten das Problem löst, testen Sie Ihre Konfiguration, um Ihre Fehler zu sehen:
$ php5-fpm -t
In den meisten Fällen haben Sie wahrscheinlich einen Fehler in Ihrem /etc/php5/fpm/php-fpm.conf
oder /etc/php5/fpm/pool.d/www.conf
gemacht.
Für mich stellte sich heraus, dass dies ein Fehler in der Pool-Konfigurationsdatei war (geladen aus dem Pool.d-Verzeichnis).
Führen Sie php-fpm7.0 -t
aus, um configtest auszuführen (Name der ausführbaren Datei kann je nach Installation und Name des Dienstes variieren)