Cara menonaktifkan dump file inti dalam wadah buruh pelabuhan

13

Wadah PHP saya menjalankan dalang untuk menghasilkan PDF. Dengan membuat dokumen PDF, itu juga membuat dua file dump inti di dalam wadah saya. Saya tidak yakin dari mana mereka sebenarnya berasal.

Host / server adalah CentOS 7.

Saya telah memeriksa yang berikut ini:

  1. Tidak ada log kesalahan aplikasi, Browsershot / puppeteer berjalan tanpa kesalahan.
  2. Tidak ada log kesalahan (mis. Segfault) ditemukan di /var/log/messages

Saya sudah mencoba untuk menonaktifkan dump inti

Dengan mengikuti bagian Disable core dumps di https://linux-audit.com/understand-and-configure-core-dumps-work-on-linux/ , saya telah melakukan:

  1. Menambahkan konten berikut ke /etc/security/limits.conf
* soft core 0
* hard core 0
  1. Dibuat disable-core-dumps.sh oleh: echo “ulimit -c 0 > /dev/null 2>&1” > /etc/profile.d/disable-coredumps.sh

  2. Menambahkan konten berikut ke /etc/systemd/coredump.conf

[Coredump]

Storage=none
ProcessSizeMax=0
  1. Dan reboot server dan wadahnya .

  2. Saya juga mencoba mengatur ulimit -c 0di dalam wadah (alpine)

Tak satu pun dari trik di atas bekerja untuk saya. Setiap kali dalang menghasilkan PDF, ia selalu membuat dua file dump inti seperti di bawah ini:

core.131 core.52

File inti terlihat seperti:

Konten file dump inti

Adakah yang bisa membantu saya untuk menonaktifkan dump inti? Terima kasih banyak.

Jonathan
sumber
Saya pikir Anda perlu menonaktifkan dump inti pada Host Anda bukan wadah atau menjalankan wadah Anda sebagai satu yang berlaku
LinPy
@LinPy Saya telah menonaktifkan dump inti pada host dengan mengikuti linux-audit.com/… . Mencoba menonaktifkan dump inti pada host dan container. Tidak ada yang bekerja.
Jonathan
Jika Anda ingin menemukan penyebab utama dari coredumps ini daripada menonaktifkannya, maka saya sarankan Anda melihat lebih dalam pada dalang. Karena dalang menggunakan nodejs dan coredump memiliki modul / libs di dalamnya, tampaknya seperti proses simpul yang memiliki kesalahan. Ada beberapa opsi debug yang dapat digunakan seperti menonaktifkan mode headless puppeteer yang mengaktifkan logging verbose. Inilah tautan untuk info lebih lanjut: github.com/puppeteer/puppeteer#debugging-tips .
ahasbini
coba edit /etc/security/limits.conf /etc/systemd/coredump.conf wadah insitde misalnya dalam file Docker yang menjelaskan cara membuat gambar
Ryabchenko Alexander
@ahasbini yang aneh adalah PDF dihasilkan dengan sempurna. Saya mengaktifkan debug tetapi tidak menemukan sesuatu yang bermanfaat. Hanya inti kesedihan.
Jonathan

Jawaban:

3

Anda harus memulai wadah Anda dengan opsi --ulimit core=0untuk menonaktifkan coredumps.

Referensi: https://docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container---ulimit

Contoh

Di host, setel sementara jalur coredump /tmpuntuk verifikasi:

echo '/tmp/core.%e.%p' | sudo tee /proc/sys/kernel/core_pattern

Mulai wadah seperti biasa dan paksa pembuangan inti:

docker run --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(shows core.yes.<pid>)

Sekarang dengan --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)
Philipp Ludwig
sumber
Terima kasih atas jawabannya. Saya menggunakan menulis dan mencoba konfigurasi ulimit dengan menetapkan lunak dan keras ke 0. Tapi masih tidak berfungsi. Apakah buruh pelabuhan menjalankan —ulimit inti = 0 sama dengan pengaturan ulimit tulis menjadi 0?
Jonathan
Saya percaya itu harus ditambahkan ke entrypoint.sh, pada perintah yang sama yang memulai aplikasi php
ahasbini
2

saya punya masalah ini juga pada layanan gerombolan buruh pelabuhan dan --ulimit inti = 0 tidak bekerja di layanan gerombolan saya menggunakan perintah di bawah ini dan bekerja untuk saya di layanan gerombolan buruh pelabuhan!

sysctl -w kernel.core_pattern = / dev / null

iraj norouzi
sumber
Terima kasih! Ini juga triknya.
Jonathan