All Products
Search
Document Center

:Menangani error task: Cannot allocate memory

Last Updated:Jun 22, 2026

Gejala

Saat menjalankan layanan pada instans ECS, sistem mengembalikan error task: Cannot allocate memory. Log sistem mungkin berisi entri seperti berikut:
15 10:49:08 iZbp17u xxx systemd: Failed to fork: Cannot allocate memory
15 10:49:08 iZbp17u xxx systemd: frp@8050.service failed to run 'start' task: Cannot allocate memory
15 10:49:08 iZbp17u xxx systemd: Failed to start example systemd custom service unit file 8050.
15 10:49:08 iZbp17u xxx systemd: Unit frp@8050.service entered failed state.
15 10:49:08 iZbp17u xxx systemd: frp@8050.service failed.
15 10:49:08 iZbp17u xxx systemd: Failed to fork: Cannot allocate memory
15 10:49:08 iZbp17u xxx systemd: frp@8049.service failed to run 'start' task: Cannot allocate memory
15 10:49:08 iZbp17u xxx systemd: Failed to start example systemd custom service unit file 8049.
15 10:49:08 iZbp17u xxx systemd: Unit frp@8049.service entered failed state.

Penyebab

Masalah ini terjadi karena jumlah proses pada sistem melebihi batas yang dikonfigurasi.

Kernel Linux menggunakan parameter kernel.pid_max untuk membatasi jumlah total proses. Jika jumlah proses yang sedang berjalan melebihi nilai kernel.pid_max, setiap upaya membuat proses baru akan gagal dan sistem melaporkan error task: Cannot allocate memory.
Catatan Jika jumlah proses yang sedang berjalan melebihi dua pertiga dari nilai kernel.pid_max, segera tingkatkan nilai kernel.pid_max untuk mencegah gangguan layanan.

Solusi

Ikuti langkah-langkah berikut untuk meningkatkan nilai kernel.pid_max, sehingga sistem dapat menjalankan lebih banyak proses.
Catatan Pada sistem 64-bit, nilai maksimum untuk kernel.pid_max adalah 222kernel.pid_max. Pada sistem 32-bit, nilai maksimumnya adalah 32.768.
  1. Sambungkan ke instans ECS.
    Untuk informasi selengkapnya, lihat Connect to an ECS instance.
  2. Jalankan perintah berikut untuk memeriksa apakah jumlah proses saat ini melebihi batas sistem.
    • Periksa jumlah proses yang sedang berjalan.
      ps -eLf | wc -l
    • Periksa jumlah maksimum proses yang diizinkan oleh sistem.
      sysctl kernel.pid_max

    Jika jumlah proses yang sedang berjalan mendekati atau melebihi batas maksimum, lanjutkan ke langkah 3.

  3. Ganti XXXX dengan nilai baru untuk kernel.pid_max.
    • Untuk mengatur nilai sementara, jalankan salah satu perintah berikut. Pengaturan ini akan direset setelah instans direstart.
      • sysctl -w kernel.pid_max=XXXX
      • echo XXXX> /proc/sys/kernel/pid_max
    • Untuk mengatur nilai secara permanen, jalankan perintah berikut. Pengaturan ini tetap berlaku meskipun instans direstart.
      echo "kernel.pid_max=XXXX" >> /etc/sysctl.conf
      sysctl -p
    Nilai baru langsung berlaku.