php-fpm 不產生核心轉儲文件,儘管配置為

php-fpm 不產生核心轉儲文件,儘管配置為

我正在使用 php-fpm 5.4 運行 Centos 7。我在 php-fpm 錯誤日誌中遇到(訊號 11)SIGSEGV 錯誤,並且想要對其進行偵錯。

我聽從了建議php5 fpm:如何從段錯誤產生核心轉儲?但 php-fpm 仍然沒有嘗試產生核心轉儲。從 php-fpm 錯誤日誌:

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

如果產生了核心轉儲,它會讀取(SEGSEGV - core dumped),但不會讀取。

答案1

我也遇到了這個問題。似乎在 centos 上,masterphp-fpm進程是以 root 權限啟動的,然後以較低的權限啟動各個池(php-fpm預設是 centos 上的使用者)。

對我來說,我懷疑對你來說,絆腳石是,如果一個進程改變了它自己的執行權限,則不允許生成核心轉儲文件,除非/proc/sys/fs/suid_dumpable設置為允許這樣做。查看有關此內核級控制的信息這裡

答案2

我能夠透過以下方法解決這個問題:

  1. 新增到 /etc/systemd/system.conf 檔案:

DefaultLimitCORE=infinity

  1. 更改了 kernel.core_pattern:

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

  1. 重新載入系統配置:

systemctl daemon-reload

作為 php-fpm 的額外步驟,需要在要監控的各個 php-fpm 池檔案中設定以下指令:

rlimit_core = 無限制

systemd-coredump 程式的預設目錄是,/var/lib/systemd/coredump因此您應該看到此處產生的轉儲檔案。

答案3

啟動池之前的 PHP-FPM 切換器使用者。因此我必須更改fs.suid_dumpable1如上所述

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

sysctl -w fs.suid_dumpable=1

相關內容