全部产品
Search
文档中心

:Apa yang harus saya lakukan jika instance ECS down dan muncul pesan kesalahan "Out of memory and no killable processes"?

更新时间:Jul 02, 2025

Jika instance Elastic Compute Service (ECS) Anda down dan muncul pesan kesalahan Out of memory and no killable processes di log kesalahan, gunakan solusi dalam topik ini untuk menyelesaikan masalah tersebut.

Deskripsi Masalah

Instance mengalami downtime pada waktu proses dengan tampilan call stack serupa berikut:

[28663.625353] [ pid ]   uid  tgid total_vm      rss nr_ptes nr_pmds swapents oom_score_adj name
[28663.625363] [ 1799]     0  1799    26512      245      56       3        0         -1000 sshd
[28663.625367] [29219]     0 29219    10832      126      26       3        0         -1000 systemd-udevd
[28663.625375] Kernel panic - not syncing: Out of memory and no killable processes...
[28663.634374] CPU: 1 PID: 3578 Comm: kworker/u176:4 Tainted: G           OE   3.10.0-1062.9.1.el7.x86_64 #1
[28663.676873] Call Trace:
[28663.679312]  [<ffffffff8139f342>] dump_stack+0x63/0x81
[28663.684421]  [<ffffffff811b2245>] panic+0xf8/0x244
[28663.689184]  [<ffffffff811b98db>] out_of_memory+0x2eb/0x550
[28663.694726]  [<ffffffff811be254>] __alloc_pages_may_oom+0x114/0x1c0
[28663.700959]  [<ffffffff811bedb3>] __alloc_pages_slowpath+0x7d3/0xa40
[28663.707279]  [<ffffffff811bf229>] __alloc_pages_nodemask+0x209/0x260
[28663.713599]  [<ffffffff81216535>] alloc_pages_current+0x95/0x140
[28663.719573]  [<ffffffff811ba5ee>] __get_free_pages+0xe/0x40
[28663.725113]  [<ffffffff81075dae>] pgd_alloc+0x1e/0x160
[28663.730225]  [<ffffffff810875e4>] mm_init+0x184/0x240
[28663.735249]  [<ffffffff81088102>] mm_alloc+0x52/0x60
[28663.740186]  [<ffffffff81257640>] do_execveat_common.isra.37+0x250/0x780
[28663.759839]  [<ffffffff81257b9c>] do_execve+0x2c/0x30
[28663.764864]  [<ffffffff810a231b>] call_usermodehelper_exec_async+0xfb/0x150
[28663.777246]  [<ffffffff81741dd9>] ret_from_fork+0x39/0x50

Penyebab

Ketika kernel sistem operasi instance gagal mengalokasikan memori ke proses dan mencoba membunuh proses tertentu untuk melepaskan memori, tidak ada proses yang dapat dibunuh. Akibatnya, instance menjadi down. Masalah ini dapat disebabkan oleh alasan berikut:

  • Terjadi kebocoran memori di kernel sistem operasi, menyebabkan memori tersedia di sistem menjadi tidak cukup.

  • Proses-proses dengan nilai oom_score_adj diatur ke -1000 menggunakan memori secara berlebihan dan tidak dapat dibunuh, sehingga menyebabkan memori tersedia di sistem menjadi tidak cukup.

    Catatan

    Nilai oom_score_adj adalah bilangan bulat yang menunjukkan kemungkinan suatu proses dipilih untuk OOM killing oleh kernel. Nilai lebih rendah menunjukkan proses kurang mungkin dipilih, sedangkan nilai lebih tinggi menunjukkan proses lebih mungkin dipilih.

Solusi

Penting

Sebelum melakukan operasi solusi ini pada instance bermasalah, buat snapshot untuk mencadangkan data. Hal ini mencegah hilangnya data akibat operasi tidak disengaja. Untuk informasi tentang cara membuat snapshot, lihat Buat snapshot.

  1. Periksa apakah terjadi kebocoran memori di kernel sistem operasi.

    Untuk informasi lebih lanjut, lihat Apa yang harus saya lakukan jika instance memiliki persentase memori slab_unreclaimable yang tinggi?

  2. Periksa apakah nilai oom_score_adj diatur dengan benar.

    1. Jalankan perintah ps, top, atau pgrep untuk mendapatkan PID dari proses tertentu. Contoh perintah:

      ps aux | grep <Nama Proses>

      Ganti <Nama Proses> dengan nama proses yang PID-nya ingin Anda peroleh.

    2. Jalankan perintah berikut untuk memeriksa nilai oom_score_adj:

      cat /proc/<PID>/oom_score_adj

      Ganti <PID> dengan PID sebenarnya yang Anda peroleh.

      Berdasarkan lingkungan dan kebutuhan Anda, evaluasi apakah pengaturan OOM killing untuk proses sudah sesuai berdasarkan nilai oom_score_adj. Jika nilai oom_score_adj untuk suatu proses adalah -1000, proses tersebut memiliki prioritas lebih rendah dan kurang mungkin dipilih untuk OOM killing oleh kernel, sehingga memori tersedia di sistem mungkin menjadi tidak cukup.