
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-fpm
Prozess mit Root-Rechten gestartet wird, der dann die einzelnen Pools mit reduzierten Rechten startet ( php-fpm
standardmäß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_dumpable
dies ist entsprechend eingestellt. Informationen zu dieser Steuerung auf Kernelebene finden Sie unterHier.
Antwort2
Ich konnte das Problem wie folgt lösen:
- Zur Datei /etc/systemd/system.conf hinzugefügt:
DefaultLimitCORE=infinity
- Das kernel.core_pattern wurde geändert:
sysctl kernel.core_pattern='| /usr/lib/systemd/systemd-coredump %p %u %g %s %t %c %e'
- 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/coredump
daher 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_dumpable
auf1
https://itnext.io/linux-processes-core-dumps-systemd-coredump-and-debian-cf2ddb11ef9e
sysctl -w fs.suid_dumpable=1