Topik ini menjelaskan penyebab dan solusi untuk masalah ketika sejumlah besar proses tidak dapat dibuat pada instans Elastic Compute Service (ECS) yang menjalankan Alibaba Cloud Linux 2.
Deskripsi masalah
Saat pemanggilan sistem fork atau clone dijalankan pada instans Alibaba Cloud Linux 2, proses tidak dapat dibuat dan muncul pesan kesalahan "-1 EAGAIN (Resource temporarily unavailable)". Masalah ini biasanya terjadi dalam salah satu dari skenario berikut:
Skema 1: Saat menjalankan perintah shell pada instans, muncul pesan kesalahan "
bash: fork: retry: No child processes".Skema 2: Proses atau thread tidak dapat dibuat untuk aplikasi tertentu, tetapi dapat dibuat untuk aplikasi lainnya.
Penyebab
Masalah ini dapat terjadi karena alasan berikut:
Penyebab 1: Jumlah maksimum thread yang dapat dibuat oleh pengguna sistem telah tercapai. Anda dapat menjalankan perintah
ulimit -uuntuk memeriksa jumlah maksimum thread yang dapat dibuat oleh pengguna sistem.Penyebab 2: Jumlah proses (nr_user_process) yang dibuat oleh pengguna waktu proses untuk aplikasi tertentu melebihi batas atas spesifik aplikasi (app_limit).
Solusi
Ubah jumlah maksimum thread yang dapat dibuat oleh pengguna sistem
Identifikasi aplikasi-aplikasi yang prosesnya tidak dapat dibuat.
Jalankan perintah berikut untuk secara paksa menghentikan aplikasi yang menggunakan banyak thread.
PeringatanPerintah
killdapat menyebabkan risiko. Sebelum menjalankan perintah kill, disarankan untuk membuat snapshot instans atau mencadangkan file penting instans guna memastikan keamanan data.Ganti
<PID>dengan ID proses (PID) dari aplikasi yang ingin dihentikan.kill -9 <PID>Jalankan perintah berikut untuk mengubah jumlah maksimum thread yang dapat dibuat oleh pengguna sistem:
ulimit -u <$Num_Of_Process>
Ubah batas sumber daya suatu proses
(Opsional) Jika paket
util-linuxbelum diinstal pada instans, jalankan perintah berikut untuk menginstalnya:yum install -y util-linuxUbah batas sumber daya suatu proses.
Ganti
<$PID>dengan PID.prlimit --pid <$PID> --nproc=unlimited