Saya memiliki server khusus tempat saya menginstal apache2
, juga rails-passenger
. Walaupun saya memiliki 2GB RAM dan sebagian besar kali sekitar 1,5GB gratis, ada beberapa waktu acak di mana saya kehilangan ssh
dan konektivitas generik karena oom-killer
membunuh proses.
Saya kira ada kebocoran memori tetapi saya tidak bisa mengetahui dari mana asalnya. oom-killer
membunuh apache2
, mysql
, passenger
dan apa pun.
Kemarin, saya melakukan cat syslog | grep -c oom-killer
dan mendapatkan 57 kejadian!
Tampaknya ada sesuatu yang serius menghancurkan ingatan. Setelah saya reboot, semuanya kembali normal. Saya curiga ini bisa berhubungan passenger
, tapi saya masih mencoba mencari tahu.
Dapatkah Anda memikirkan penyebab lain, atau apakah Anda memiliki sesuatu untuk disarankan yang akan membuat prosedur identifikasi kebocoran lebih mudah? Aku bahkan berpikir untuk menulis skrip bash, untuk dijalankan cron
setiap 5 menit.
sumber
Jawaban:
Kernel Linux secara default memori overcommit sehingga kadang-kadang sebuah program akan berhasil mengalokasikan memori tidak tersedia dan OOM akan menendang dan membunuh proses acak sebagai gantinya. Menonaktifkan ini mungkin akan memungkinkan Anda mengidentifikasi aplikasi apa yang mencuri memori. Misal, jika suatu aplikasi tiba-tiba mengalokasikan sejumlah besar memori, aplikasi itu akan gagal (dan semoga mengembalikan pesan kesalahan). Aplikasi lain mungkin gagal mengalokasikan memori juga sehingga Anda harus berhati-hati terhadap false positive.
gema 2> / proc / sys / vm / overcommit_memory
sumber