Apakah ada cara untuk mendapatkan dump inti, atau dapat men-debug proses yang telah dibunuh oleh oom-killer?
Atau bahkan mengatur oom-killer untuk mencoba membunuh proses menggunakan ABRT?
Pendekatan lain, adalah menonaktifkan overcommitting of memory.
Untuk mengembalikan beberapa kesamaan kewarasan ke manajemen memori Anda:
- Nonaktifkan Pembunuh OOM (Masukkan
vm.oom-kill = 0
/etc/sysctl.conf)- Nonaktifkan memori overcommit (Masukan
vm.overcommit_memory = 2
di/etc/sysctl.conf
)Pengaturan ini akan membuat Linux berperilaku dengan cara tradisional (jika suatu proses meminta lebih banyak memori daripada yang tersedia
Perhatikan bahwa ini adalah nilai terner:malloc()
akan gagal dan proses yang meminta memori diharapkan untuk mengatasi kegagalan itu).
- 0 = "perkiraan jika kita memiliki RAM yang cukup"
- 1 = "Selalu katakan ya"
- 2 = "katakan tidak jika kita tidak memiliki memori"
Ini akan memaksa aplikasi untuk menangani kehabisan memori itu sendiri, dan mungkin log / coredump / dll. Dapat memberi Anda sesuatu yang berguna.
CATATAN: Ketika sistem Anda kehabisan memori, Anda tidak akan dapat menelurkan proses baru! Anda mungkin dikunci dari sistem.
yang tampaknya tentang maks yang bisa Anda dapatkan dari kernel untuk ditampilkan pada memori kehabisan memori.
https://www.kernel.org/doc/Documentation/sysctl/vm.txt
sumber