Jawaban:
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.
echo 1 > /proc/sys/vm/oom_dump_tasks
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
Mengaktifkan dump tugas di seluruh sistem (tidak termasuk utas kernel) yang akan dihasilkan saat kernel melakukan pembunuhan-OOM dan mencakup informasi seperti pid, uid, tgid, ukuran vm, rss, nr_ptes, swapents, skor oom_score_adj, dan nama. Ini membantu untuk menentukan mengapa pembunuh OOM dipanggil, untuk mengidentifikasi tugas jahat yang menyebabkannya, dan untuk menentukan mengapa pembunuh OOM memilih tugas yang dilakukannya untuk membunuh.
Jika ini disetel ke nol, informasi ini ditekan. Pada sistem yang sangat besar dengan ribuan tugas, tidak mungkin untuk membuang informasi status memori untuk masing-masing tugas. Sistem seperti itu tidak boleh dipaksa untuk dikenakan penalti kinerja dalam kondisi OOM ketika informasi mungkin tidak diinginkan.
Jika ini disetel ke non-nol, informasi ini ditampilkan setiap kali pembunuh OOM benar-benar membunuh tugas penghilangan memori.