
저는 php-fpm 5.4로 Centos 7을 실행하고 있습니다. 내 php-fpm 오류 로그에 (신호 11) SIGSEGV 오류가 발생하여 디버깅하고 싶습니다.
나는 선생님의 조언을 따랐습니다.php5 fpm: segfault에서 코어 덤프를 어떻게 생성합니까?하지만 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에서는 마스터 php-fpm
프로세스가 루트 권한으로 시작된 다음 제한된 권한으로 개별 풀을 시작하는 것 같습니다 ( php-fpm
기본적으로 centos의 사용자).
저와 여러분 모두의 걸림돌은 프로세스가 자신의 실행 권한을 변경한 경우 /proc/sys/fs/suid_dumpable
이를 허용하도록 설정하지 않는 한 코어 덤프 파일을 생성하는 것이 허용되지 않는다는 것입니다. 이 커널 수준 제어에 대한 정보 보기여기.
답변2
나는 다음을 통해 이 문제를 해결할 수 있었습니다.
- /etc/systemd/system.conf 파일에 추가됨:
DefaultLimitCORE=infinity
- kernel.core_pattern을 변경했습니다.
sysctl kernel.core_pattern='| /usr/lib/systemd/systemd-coredump %p %u %g %s %t %c %e'
- 시스템 구성을 다시 로드했습니다.
systemctl daemon-reload
php-fpm에 대한 추가 단계로 모니터링하려는 개별 php-fpm 풀 파일에 다음 지시문을 설정해야 합니다.
rlimit_core = 무제한
systemd-coredump 프로그램의 기본 디렉터리는 /var/lib/systemd/coredump
여기에서 생성된 덤프 파일을 볼 수 있는 디렉터리입니다.
답변3
풀을 시작하기 전의 PHP-FPM 전환기 사용자입니다. 따라서 위에서 언급 한대로 fs.suid_dumpable
변경 해야했습니다 .1
https://itnext.io/linux-processes-core-dumps-systemd-coredump-and-debian-cf2ddb11ef9e
sysctl -w fs.suid_dumpable=1