GNU/Linux >> Belajar Linux >  >> Linux

Pembunuh OOM membunuh banyak hal dengan banyak (?) RAM gratis

Solusi 1:

Saya baru saja melihat oom log dump, dan saya mempertanyakan keakuratan grafik itu. Perhatikan baris 'Node 0 DMA32' pertama. Dikatakan free:3376kB , min:3448kB , dan low:4308kB . Setiap kali nilai gratis turun di bawah nilai rendah, kswapd seharusnya mulai bertukar barang sampai nilai tersebut naik kembali di atas nilai tinggi. Setiap kali gratis turun di bawah min, sistem pada dasarnya membeku sampai kernel mendapatkannya kembali di atas nilai min. Pesan itu juga menunjukkan bahwa swap telah sepenuhnya digunakan di mana dikatakan Free swap = 0kB .
Jadi pada dasarnya kswapd dipicu, tetapi swap sudah penuh, jadi tidak bisa melakukan apa-apa, dan nilai pages_free masih di bawah nilai pages_min, jadi satu-satunya pilihan adalah mulai mematikan sesuatu sampai bisa mendapatkan cadangan pages_free.
Anda pasti kehabisan memori.

http://web.archive.org/web/20080419012851/http://people.redhat.com/dduval/kernel/min_free_kbytes.html memiliki penjelasan yang sangat bagus tentang cara kerjanya. Lihat bagian 'Implementasi' di bagian bawah.

Solusi 2:

Singkirkan skrip drop_caches. Selain itu, Anda harus memposting bagian yang relevan dari dmesg Anda dan /var/log/messages keluaran menampilkan pesan OOM.

Namun, untuk menghentikan perilaku ini, saya sarankan mencoba sysctl ini merdu. Ini adalah sistem RHEL/CentOS 6 dan jelas berjalan pada sumber daya terbatas. Apakah ini mesin virtual?

Coba ubah /proc/sys/vm/nr_hugepages dan lihat apakah masalah tetap ada. Ini bisa menjadi masalah fragmentasi memori, tetapi lihat apakah pengaturan ini membuat perbedaan. Untuk membuat perubahan permanen, tambahkan vm.nr_hugepages = value ke /etc/sysctl.conf Anda dan jalankan sysctl -p untuk membaca ulang file konfigurasi...

Lihat juga:Menafsirkan pesan "kegagalan alokasi halaman" kernel samar

Solusi 3:

Tidak ada data yang tersedia pada grafik dari saat pembunuh OOM dimulai hingga berakhir. Saya percaya pada kerangka waktu di mana grafik terganggu bahwa sebenarnya konsumsi memori melonjak dan tidak ada lagi memori yang tersedia. Kalau tidak, pembunuh OOM tidak akan digunakan. Jika Anda melihat grafik memori bebas setelah pembunuh OOM berhenti, Anda dapat melihatnya turun dari nilai yang lebih tinggi dari sebelumnya. Setidaknya itu melakukan tugasnya dengan baik, membebaskan memori.

Perhatikan bahwa ruang swap Anda hampir digunakan sepenuhnya hingga reboot. Itu hampir tidak pernah merupakan hal yang baik dan tanda yang pasti hanya ada sedikit memori kosong yang tersisa.

Alasan tidak tersedianya data untuk jangka waktu tersebut adalah karena sistem terlalu sibuk dengan hal lain. Nilai "Lucu" dalam daftar proses Anda mungkin hanya akibat, bukan sebab. Itu tidak pernah terdengar.

Periksa /var/log/kern.log dan /var/log/messages, informasi apa yang dapat Anda temukan di sana?

Jika logging juga berhenti maka coba hal lain, buang daftar proses ke file setiap detik, sama dengan informasi kinerja sistem. Jalankan dengan prioritas tinggi agar tetap bisa melakukan tugasnya (semoga) saat beban melonjak. Meskipun jika Anda tidak memiliki kernel preempt (terkadang diindikasikan sebagai kernel "server"), Anda mungkin kurang beruntung dalam hal itu.

Saya pikir Anda akan menemukan bahwa proses yang (sedang) menggunakan CPU% paling banyak saat masalah Anda mulai adalah penyebabnya. Saya belum pernah melihat rsyslogd atau mysql berperilaku seperti itu. Penyebab yang lebih mungkin adalah aplikasi java dan aplikasi berbasis gui seperti browser.


Linux
  1. Terima Sinyal Sebelum Proses Dibunuh Oleh Oom Killer / Cgroups?

  2. Nilai persentase dengan GNU Diff

  3. Bagaimana cara mendapatkan% penggunaan memori dengan vmstat?

  1. Linux – Menentukan Penggunaan Memori dengan Benar di Linux?

  2. Mengukur Penggunaan Ram Suatu Program?

  3. Mengapa Swap digunakan ketika banyak memori kosong yang tersisa?

  1. Linux – Bagaimana Pembunuh Oom Memutuskan Proses Mana Yang Harus Dibunuh Pertama?

  2. Debian – Pembunuh Oom Tidak Bekerja Dengan Benar, Menyebabkan Os Beku?

  3. Perintah Gratis di Linux Dijelaskan Dengan Contoh