apache httpd core dump 생성하기

# apache httpd 프로세스에 크래시되면 core dump 파일 생성하기
# httpd.conf 수정
vi httpd.conf
CoreDumpDirectory  /ysoftman

# core dump 디렉토리 권한 주기
chmod 0777 /ysoftman

# core 덤프 사이즈 제한 없애기
# limits.conf 파일 수정 (시스템 rebooting 필요)
sudo vi /etc/security/limits.conf
* soft core unlimited

# 또는 .basrhc 또는 .zsrhc 에 추가
ulimit -c unlimited

# core unlimited 확인
ulimit -a

# sysctl 설정 확인
sudo sysctl -a | grep kernel.core

# core 파일명에 pid 명시되도록 설정
sudo sysctl kernel.core_uses_pid=1

# core 기본 파일이름
sudo sysctl kernel.core_pattern=core

# docker container 의 경우 다음과 같이 읽기 전용 파일이라고 에러가 발생한다.
sysctl: setting key "kernel.core_uses_pid": Read-only file system

# docker container 에서는 sysctl 로 확인만 가능하다.
# 다음과 같이 /etc/sysctl.conf 파일에 명시해야 한다.
RUN echo 'kernel.core_uses_pid = 1' >> /etc/sysctl.conf

# docker run --sysctl 옵션은 사용할 수 있지만
# docker run --sysctl kernel.core_uses_pid=1 사용하면 다음 에러가 난다.
# kernel* 부분들을 run 시 설정할 수 없는것 같다.
invalid argument "kernel.core_uses_pid=1" for "--sysctl" flag: sysctl 'kernel.core_uses_pid=1' is not whitelisted

# httpd 재시작
bin/apachectl stop
bin/apachectl start

# httpd process 에 SEGV(segmentation fault) signal 주어 코어 파일 생성
kill -11 123456

# 참고
https://www.kernel.org/doc/Documentation/sysctl/kernel.txt
https://www.centos.org/forums/viewtopic.php?t=44865
https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime
https://github.com/moby/moby/issues/7040

comments:

댓글 쓰기