php5-fpm kein restart nach Paktetupdate

WernerH

Member
Hallo zusammen,

ich habe zwei nahezu identische Server. Beide laufen unter Debian Jessie mit systemd. Auf beiden verwendet ich php5-fpm.

  • Auf dem einen System habe ich php5-fpm gleich bei der Installation mit installiert. Hier funktioniert das Paket-Update mit apt-get dist-upgrade prima. D.h. php5-fpm wird sauber runtergefahren und wieder neu gestartet.

  • Auf dem anderen Server hatte ich php5-fpm zunächst nicht in Benutzung und habe dieses Paket später nachinstalliert. Auch dieses System funktioniert soweit prima, nur nach einem Paket-Update für php5-fpm startet der Daemon nicht wieder automatisch. Jedes Mal ist ein manueller Restart erforderlich. Danach läuft der php5-fpm Daemon dann wieder einwandfrei. Auch nach einem Reboot startet php5-fpm korrekt.

Leider bin ich trotz intensiver Bemühungen von Dr. Google nicht weitergekommen. Habt ihr vielleicht eine Idee, woran es liegen bzw. wo es klemmen könnte?

Besten Dank schon mal im Voraus!

Viele Grüße

Werner
 
Last edited by a moderator:
Für mich liest sich das eher so, als ob nach Updates kein automatischer Neustart von php-fpm durchgeführt wird, er aber jederzeit manuell den Dienst starten kann, respektive ein Neustart des Servers den Dienst auch neustartet.

Falls dem so ist, finde ich das allerdings auch sehr merkwürdig, da das ja eigentlich durch den Paketmanager durchgeführt werden sollte.
 
Für mich liest sich das eher so, als ob nach Updates kein automatischer Neustart von php-fpm durchgeführt wird, er aber jederzeit manuell den Dienst starten kann, respektive ein Neustart des Servers den Dienst auch neustartet.

Richtig, so verstehe ich es auch, aber darum ja auch die Frage nach dem Log. Denn da sollte der Grund drin stehen, warum der Startversuch durch den Paketmanager fehlschlägt.
 
Für mich liest sich das eher so, als ob nach Updates kein automatischer Neustart von php-fpm durchgeführt wird, er aber jederzeit manuell den Dienst starten kann, respektive ein Neustart des Servers den Dienst auch neustartet.

Falls dem so ist, finde ich das allerdings auch sehr merkwürdig, da das ja eigentlich durch den Paketmanager durchgeführt werden sollte.

Exakt so ist es. Da nach den Logfiles gefragt wurde, füge ich sie nachfolgend gerne bei. Erst mal die für den Server, auf dem php5-fpm nach dem Upgrade automatisch restartet:


/var/log/apt/history.log:

Start-Date: 2016-10-26 07:25:42
Commandline: apt-get dist-upgrade -y
Upgrade: php5-fpm:amd64 (5.6.26+dfsg-0+deb8u1, 5.6.27+dfsg-0+deb8u1), ...
End-Date: 2016-10-26 07:26:36

/var/log/php5-fpm.log:

[26-Oct-2016 07:26:36] NOTICE: Terminating ...
[26-Oct-2016 07:26:36] NOTICE: exiting, bye-bye!
[26-Oct-2016 07:26:36] NOTICE: configuration file /etc/php5/fpm/php-fpm.conf test is successful

[26-Oct-2016 07:26:36] NOTICE: fpm is running, pid 21756
[26-Oct-2016 07:26:36] NOTICE: ready to handle connections
[26-Oct-2016 07:26:36] NOTICE: systemd monitor interval set to 10000ms
Und nun die von dem Server, auf dem php5-fpm nach dem Upgrade dieses Paktes nicht automatisch wieder startet:

Start-Date: 2016-10-26 07:25:42

/var/log/apt/history.log:

Commandline: apt-get dist-upgrade -y
Upgrade: php5-fpm:amd64 (5.6.26+dfsg-0+deb8u1, 5.6.27+dfsg-0+deb8u1), ...
End-Date: 2016-10-26 07:26:35

/var/log/php5-fpm.log:

[26-Oct-2016 07:26:03] NOTICE: Terminating ...
[26-Oct-2016 07:26:03] NOTICE: exiting, bye-bye!
[26-Oct-2016 07:31:57] NOTICE: configuration file /etc/php5/fpm/php-fpm.conf test is successful

[26-Oct-2016 07:31:57] NOTICE: fpm is running, pid 27307
[26-Oct-2016 07:31:57] NOTICE: ready to handle connections
[26-Oct-2016 07:31:57] NOTICE: systemd monitor interval set to 10000ms​

Nachdem der php5-fpm Daemon hier nicht wieder automatisch gestartet wurde, habe ich das um 07:31 manuell nachgeholt.

Also, ich kann daraus leider keinen Grund erkennen, warum der automatische Restart des Daemons nach Paketupgrade nicht funktioniert. Darum ja meine Frage hier im Forum.
 
... Auch dieses System funktioniert soweit prima, nur nach einem Paket-Update für php5-fpm startet der Daemon nicht wieder automatisch. Jedes Mal ist ein manueller Restart erforderlich. Danach läuft der php5-fpm Daemon dann wieder einwandfrei. Auch nach einem Reboot startet php5-fpm korrekt.

Eventuell ist der Dienst bei dir auf deinem Server standardmäßig nicht dauerhaft aktiviert, so dass Dieser auch ein Update oder ein Neustart des Servers nicht übersteht. Von daher probiere mal im Befehl systemctl anstelle der Zeichenkette start enable anzugeben und schau dir das Verhalten dann noch mal an.
 
Eventuell ist der Dienst bei dir auf deinem Server standardmäßig nicht dauerhaft aktiviert, so dass Dieser auch ein Update oder ein Neustart des Servers nicht übersteht. Von daher probiere mal im Befehl systemctl anstelle der Zeichenkette start enable anzugeben und schau dir das Verhalten dann noch mal an.

Danke für deinen Hinweis - doch daran lag und liegts leider nicht, denn auf beiden Servern war und ist der Dienst php5-fpm bereits enabled:

# systemctl status php5-fpm

● php5-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php5-fpm.service; enabled)
...​

bzw.

# systemctl status php5-fpm

● php5-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php5-fpm.service; enabled)
...​

Aber vielleicht hat noch jemand 'ne andere Idee?
 
Besteht das Problem generell nur für das Paket php5-fpm? Wird z.B. der Apache bei einem Upgrade auf diesem System korrekt gestartet?

Sind die Dateien "/lib/systemd/system/php5-fpm.service" auf beiden Systemen identisch?

Gibt es Auffälligkeiten bzw. Unterschiede im entsprechenden Abschnitt der Logdatei /var/log/dpkg.log?
 
Besteht das Problem generell nur für das Paket php5-fpm?
Ja.

Wird z.B. der Apache bei einem Upgrade auf diesem System korrekt gestartet?
Ja.

Sind die Dateien "/lib/systemd/system/php5-fpm.service" auf beiden Systemen identisch?
absolut.

Gibt es Auffälligkeiten bzw. Unterschiede im entsprechenden Abschnitt der Logdatei /var/log/dpkg.log?
Ich füge mal beide Logfiles bei, die nicht php5-fpm-relevanten Einträge habe ich rausgefiltert:

System, das korrekt arbeitet:


2016-10-26 07:25:47 status triggers-pending php5-fpm:amd64 5.6.26+dfsg-0+deb8u1
...
2016-10-26 07:25:58 upgrade php5-fpm:amd64 5.6.26+dfsg-0+deb8u1 5.6.27+dfsg-0+deb8u1
2016-10-26 07:25:58 status half-configured php5-fpm:amd64 5.6.26+dfsg-0+deb8u1
2016-10-26 07:25:58 status unpacked php5-fpm:amd64 5.6.26+dfsg-0+deb8u1
2016-10-26 07:25:59 status half-installed php5-fpm:amd64 5.6.26+dfsg-0+deb8u1
...
2016-10-26 07:26:00 status half-installed php5-fpm:amd64 5.6.26+dfsg-0+deb8u1
2016-10-26 07:26:01 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:01 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
...
2016-10-26 07:26:20 configure php5-fpm:amd64 5.6.27+dfsg-0+deb8u1 <keine>
2016-10-26 07:26:20 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:20 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:20 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:20 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:20 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:20 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:20 status half-configured php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:33 status installed php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
...
2016-10-26 07:26:33 status triggers-pending php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
...
2016-10-26 07:26:35 trigproc php5-fpm:amd64 5.6.27+dfsg-0+deb8u1 <keine>
2016-10-26 07:26:35 status half-configured php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:36 status installed php5-fpm:amd64 5.6.27+dfsg-0+deb8u1

System, auf dem php5-fpm nach dem Upgrade nicht automatisch wieder startet:


2016-10-26 07:25:47 status triggers-pending php5-fpm:amd64 5.6.26+dfsg-0+deb8u1
...
2016-10-26 07:26:03 upgrade php5-fpm:amd64 5.6.26+dfsg-0+deb8u1 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:03 status half-configured php5-fpm:amd64 5.6.26+dfsg-0+deb8u1
2016-10-26 07:26:03 status unpacked php5-fpm:amd64 5.6.26+dfsg-0+deb8u1
2016-10-26 07:26:03 status half-installed php5-fpm:amd64 5.6.26+dfsg-0+deb8u1
...
2016-10-26 07:26:05 status half-installed php5-fpm:amd64 5.6.26+dfsg-0+deb8u1
2016-10-26 07:26:05 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:05 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
...
2016-10-26 07:26:23 configure php5-fpm:amd64 5.6.27+dfsg-0+deb8u1 <keine>
2016-10-26 07:26:23 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:23 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:23 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:23 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:23 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:24 status unpacked php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:24 status half-configured php5-fpm:amd64 5.6.27+dfsg-0+deb8u1
2016-10-26 07:26:33 status installed php5-fpm:amd64 5.6.27+dfsg-0+deb8u1

Die Logs spiegeln eigentlicht recht deutlich wieder, was passiert. Auf beiden Systemen wird pgp5-fpm korrekt installiert bzw. upgedated. Auf dem System, das korrekt arbeitet, wird der Daemon danach auch wieder gestartet, auf dem anderen aber leider nicht. Doch warum, das bleibt für mich nach wie vor unklar.
 
Läuft evtl. Upstart auf dem fehlerhaften System? Kannst Du mal folgende Befehle auf dem Problemsystem ausführen

Code:
dpkg --search /sbin/init
cat /proc/cmdline
 
Ich kann bei mir auf zwei Systemen ein ähnlichen Phänomen beobachten, allerdings betrifft es in meinem Fall den ntpd. Dort gibt es bei einem Update des ntpd Daemons im Syslog einen Eintrag, dass der Port belegt wäre und der neu gestartete ntpd beendet sich dann. Die genaue Ursache dafür habe ich noch nicht gefunden, es sieht aber zumindest so aus, als wenn systemd den ntpd bei mir schon wieder neu starten würde, obwohl der alte Prozess noch nicht mit dem Beenden fertig ist. Interessanterweise ist das ganze nicht zuverlässig reproduzierbar - manchmal funktioniert der Restart auch direkt.
 
Läuft evtl. Upstart auf dem fehlerhaften System? Kannst Du mal folgende Befehle auf dem Problemsystem ausführen

Code:
dpkg --search /sbin/init
cat /proc/cmdline

Die Ausgaben sind auf beiden Systemen identisch:

# dpkg --search /sbin/init
systemd-sysv: /sbin/init

# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64 root=UUID=e7193119-a61c-41a6-ab4e-267ef977e619 ro quiet
 
Lässt sich auf dem System der Dienst php5-fpm mit folgenden Befehlen starten bzw. stoppen?

Code:
invoke-rc.d php5-fpm start
invoke-rc.d php5-fpm stop

Diese verwendet nämlich dpkg beim Installieren bzw. Upgrade (siehe z.B. /var/lib/dpkg/info/php5-fpm.postinst).

Es wäre auch interessant zu wissen, ob es nach einem Upgrade hängende Prozesse gibt (z.B. ein Initskript, das vergeblich versucht, php5-fpm zu starten)
 
Bingo!

So, hab's ausprobiert - 3 Mal um sicherzugehen.

Also, auf dem System, das php5-fpm nach einem Upgrade wieder restartet, funktionieren

invoke-rc.d php5-fpm stop
invoke-rc.d php5-fpm start

einwandfrei. Hab's jeweils mit 'service php5-fpm status' gechecked. Soweit, so gut.

Aber auf dem System, auf dem php5-fpm nach einem Upgrade nicht wieder restartet, funktioniert nur

invoke-rc.d php5-fpm stop

D.h., egal wie oft ich

invoke-rc.d php5-fpm start

danach ausführe, der php5-fpm Daemon startet einfach nicht.
Bemühe ich hingegen

service php5-fpm start

dazu, funktioniert das Ganze einwandfrei.

Doch nun stellt sich die Frage: was tun?
 
Schön, jetzt wissen wir dass das Problem am SysVinit-Skript /etc/init.d/php5-fpm liegt, das von invoke-rc.d aufgerufen wird. Dieses mal mit dem anderen System vergleichen.

Falls identisch, dann folgende Zeile im Skriptkopf unterhalb der Kommentare einfügen
Code:
set -x
und die Ausgabe von "invoke-rc.d php5-fpm start" hier posten.
 
egal wie oft ich

invoke-rc.d php5-fpm start

danach ausführe, der php5-fpm Daemon startet einfach nicht.

Sieht verdächtig danach aus, als ob php5-fpm nicht korrekt in den Runlevels eingetragen ist.
Trag mal mit:
Code:
update-rc.d php5-fpm defaults
ein, mach einen Reboot und schau, ob php5-fpm dann mit startet. Wenn ja, sollte es dann auch nach dem nächstem Paketupdate neu starten.
 
Problem gelöst!

Also, wie nexus schon vermutet hat, lag es an den SymLinks in den Runleveln. In den RunLeveln 2-5 stand nämlich überall "K01php5-fpm" drin, was aber nur in den Runlevel 0 und 1 Sinn macht. Die habe ich dort also gelöscht.

Dafür fehlten in den Runleveln 2-5 die SymLinks "S01php5-fpm", was auch erklärt, warum sich bisher nach Eingabe von "invoke-rc.d php5-fpm start" nichts gerührt hat. Die habe ich dort jetzt nachgetragen. Und siehe da nun funktioniert auch "invoke-rc.d php5-fpm start" wie gewüscht.

Danke nochmal an alle, die an der Lösung des Problems mitgewirkt haben!
 
Back
Top