php-fpm generiert keine Core-Dump-Dateien, obwohl es so konfiguriert ist

php-fpm generiert keine Core-Dump-Dateien, obwohl es so konfiguriert ist

Ich verwende Centos 7 mit php-fpm 5.4. In meinen php-fpm-Fehlerprotokollen ist ein (Signal 11) SIGSEGV-Fehler aufgetreten und ich möchte ihn debuggen.

Ich bin dem Rat von gefolgtphp5 fpm: Wie generiert man einen Core Dump aus einem Segmentierungsfehler?aber php-fpm versucht immer noch nicht einmal, Core-Dumps zu generieren. Aus dem php-fpm-Fehlerprotokoll:

WARNING: [pool website.com] child 26953 exited on signal 11 (SIGSEGV) after 0.931337 seconds from start

Wenn ein Core Dump generiert worden wäre, könnte dieser gelesen werden, (SEGSEGV - core dumped)was jedoch nicht der Fall ist.

Antwort1

Ich hatte damit auch Probleme. Es scheint, dass unter CentOS der Master- php-fpmProzess mit Root-Rechten gestartet wird, der dann die einzelnen Pools mit reduzierten Rechten startet ( php-fpmstandardmäßig Benutzer unter CentOS).

Der Stolperstein für mich, und ich vermute, für Sie auch, ist, dass ein Prozess, der seine eigenen Ausführungsberechtigungen geändert hat, keine Core-Dump-Datei erstellen darf, es sei denn, /proc/sys/fs/suid_dumpabledies ist entsprechend eingestellt. Informationen zu dieser Steuerung auf Kernelebene finden Sie unterHier.

Antwort2

Ich konnte das Problem wie folgt lösen:

  1. Zur Datei /etc/systemd/system.conf hinzugefügt:

DefaultLimitCORE=infinity

  1. Das kernel.core_pattern wurde geändert:

sysctl kernel.core_pattern='| /usr/lib/systemd/systemd-coredump %p %u %g %s %t %c %e'

  1. Systemd-Konfiguration neu geladen:

systemctl daemon-reload

Als zusätzlicher Schritt für php-fpm muss die folgende Anweisung in den einzelnen php-fpm-Pooldateien festgelegt werden, die Sie überwachen möchten:

rlimit_core = unbegrenzt

Dies ist das Standardverzeichnis für das Programm systemd-coredump, /var/lib/systemd/coredumpdaher sollten Sie hier die generierten Dump-Dateien sehen.

Antwort3

PHP-FPM Switcher-Benutzer vor dem Starten der Pools. Daher musste ich wie erwähnt fs.suid_dumpableauf1

https://itnext.io/linux-processes-core-dumps-systemd-coredump-and-debian-cf2ddb11ef9e

sysctl -w fs.suid_dumpable=1

verwandte Informationen