내 PHP 컨테이너는 puppeteer를 실행하여 PDF를 생성합니다. PDF 문서를 생성하면 컨테이너 내에 두 개의 코어 덤프 파일도 생성됩니다. 나는 그들이 실제로 어디에서 왔는지 확신하지 못한다.
호스트 / 서버는 CentOS 7입니다.
다음을 확인했습니다.
- 응용 프로그램 오류 로그가 없으며 Browsershot / puppeteer가 오류없이 실행 중입니다.
- 오류 로그 (예 : segfault)가 없습니다.
/var/log/messages
코어 덤프를 비활성화하려고했습니다.
https://linux-audit.com/understand-and-configure-core-dumps-work-on-linux/의 코어 덤프 비활성화 섹션에 따라 완료했습니다.
- 다음 내용 추가
/etc/security/limits.conf
* soft core 0
* hard core 0
-
다음과 같이 disable-core-dumps.sh를 작성했습니다.
echo “ulimit -c 0 > /dev/null 2>&1” > /etc/profile.d/disable-coredumps.sh
-
다음 내용을 추가했습니다
/etc/systemd/coredump.conf
[Coredump]
Storage=none
ProcessSizeMax=0
-
그리고 서버와 컨테이너를 재부팅합니다 .
-
나는 또한
ulimit -c 0
컨테이너 (고산) 내부 에 설정하려고했습니다.
위의 트릭 중 어느 것도 나를 위해 작동하지 않습니다. 꼭두각시가 PDF를 생성 할 때마다 항상 아래와 같은 두 개의 코어 덤프 파일이 생성됩니다.
core.131 core.52
핵심 파일은 다음과 같습니다.
누구든지 코어 덤프를 비활성화 할 수 있습니까? 고마워
답변
--ulimit core=0
코어 덤프를 비활성화 하는 옵션 으로 컨테이너를 시작해야합니다 .
참조 : https://docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container—ulimit
예
호스트에서 /tmp
검증 을 위해 코어 덤프 경로를 임시로 설정하십시오 .
echo '/tmp/core.%e.%p' | sudo tee /proc/sys/kernel/core_pattern
평소와 같이 컨테이너를 시작하고 코어 덤프를 강제 실행하십시오.
docker run --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(shows core.yes.<pid>)
와 지금 --ulimit core=0
:
docker run --ulimit core=0 --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(No entries)
답변
도커 스웜 서비스 에서도이 문제가 있으며 –ulimit core = 0이 스웜 서비스에서 작동하지 않습니다. 아래 명령을 사용하여 도커 스웜 서비스에서 저를 위해 일했습니다!
sysctl -w kernel.core_pattern = / dev / null