Gejala
-
Kegagalan koneksi jarak jauh:
-
Saat Anda menggunakan SSH atau Workbench untuk terhubung ke instans, koneksi ditolak atau timeout.
-
Saat Anda menggunakan VNC untuk login, muncul pesan System error setelah memasukkan kredensial yang benar.
-
-
Perilaku aplikasi tidak normal:
Log aplikasi atau output command line menampilkan error Too many open files.
./test3.sh: redirection error: cannot duplicate fd: Too many open files ./test3.sh: line 13: /tmp/testfile_20: Too many open files Error opening file 20: Too many open files
Penyebab
Batas resource nofile terlalu ketat: Parameter nofile dalam file /etc/security/limits.conf menentukan jumlah maksimum file yang dapat dibuka oleh suatu proses. Jika suatu proses mencoba membuka lebih banyak file daripada batas ini, sistem dapat melaporkan error atau menolak koneksi baru.
Prosedur
Jika Anda dapat login ke instans, Anda dapat langsung mengubah file konfigurasi. Jika tidak dapat login, Anda harus memperbaiki konfigurasi dengan menyambungkan disk sistem ke instans lain.
Dengan akses ke instans
-
Login ke Instance ECS sebagai pengguna root.
-
Buka halaman Konsol ECS - Instances. Di pojok kiri atas, pilih kelompok sumber daya dan wilayah tempat instans berada.
-
Buka halaman detail instans target. Klik Connect dan pilih Workbench. Ikuti petunjuk di layar untuk login sebagai root user dan buka terminal.
-
-
Ubah file konfigurasi.
Edit file
/etc/security/limits.conf. Ubah nilai parameterhard nofiledansoft nofilemenjadi nilai default65535. Simpan file dan keluar.* soft nofile 65535 * hard nofile 65535 root soft nofile 65535 root hard nofile 65535-
Tanda bintang (
*) berlaku untuk semua pengguna biasa, sedangkanrootberlaku untuk pengguna root. -
hard nofile: Batas keras jumlah file yang dapat dibuka. Nilai ini tidak boleh melebihi batas yang ditetapkan oleh parameter kernelfs.nr_open. Jika dilanggar, Anda mungkin tidak dapat login ke instans. -
soft nofile: Batas saat ini jumlah file yang dapat dibuka. Nilai ini tidak boleh melebihi batashard nofile. Jika dilanggar, konfigurasi ini akan diabaikan.Jika nilai
soft nofilelebih besar daripada nilaihard nofile, nilai efektifnofileadalah nilai parameterhard nofile.
-
-
Terapkan konfigurasi baru.
-
Logout dari Instance ECS, lalu login kembali sebagai pengguna target agar perubahan diterapkan.
-
Jalankan perintah
sudo ulimit -n. Jika output-nya65535, berarti batasnofiletelah diperbarui.
-
-
Mulai ulang aplikasi terkait dan verifikasi bahwa aplikasi berfungsi secara normal.
Tanpa akses ke instans
Jika tersedia snapshot historis dari disk sistem, kami menyarankan Anda terlebih dahulu membuat snapshot baru untuk backup data saat ini. Lalu, kembalikan disk sistem menggunakan snapshot historis tersebut dan verifikasi bahwa instans telah dipulihkan.
Jika tidak tersedia snapshot historis, siapkan sebuah instans Linux yang sehat dan berada di zona yang sama dengan instans bermasalah. Anda kemudian dapat mengubah parameter nofile dengan menyambungkan disk sistem dari instans bermasalah ke instans yang sehat.
-
Lepaskan disk sistem.
Pastikan instans bermasalah berada dalam status Stopped dan lakukan langkah-langkah berikut:
-
Untuk mencegah kehilangan data secara tidak sengaja, buat snapshot manual dari disk sistem.
-
Buka halaman Konsol ECS - Instances. Di pojok kiri atas, pilih kelompok sumber daya dan wilayah tempat instans berada.
-
Klik ID instans bermasalah untuk membuka halaman Instance Details. Lalu, klik tab Block Storage.
-
Pada bagian System Disk, temukan kolom Actions dan pilih .
-
Pada kotak dialog Detach Disk, konfirmasi informasi dan klik OK. Saat status instans berubah menjadi No System Disk, berarti disk berhasil dilepas.
-
-
Sambungkan disk tersebut sebagai data disk ke instans yang sehat.
Pastikan instans yang sehat berada dalam status Running dan lakukan langkah-langkah berikut:
-
Sambungkan disk sistem dari instans bermasalah ke instans yang sehat.
-
Klik ID instans yang sehat untuk membuka halaman detailnya.
-
Klik tab Block Storage, lalu klik Attach Disk.
-
Pada halaman Attach to Instance, pilih disk sistem yang telah dilepas pada bagian Disk dan klik Next.
-
Pada halaman Partition Disk and Create and Mount File Systems, pilih Configure Later untuk menyelesaikan penyambungan.
-
-
Klik Connect dan pilih Workbench. Ikuti petunjuk di layar untuk login sebagai root user dan buka terminal.
-
Pasang sistem file.
-
Identifikasi nama partisi dari disk bermasalah.
lsblk -fvda ├─vda1 ├─vda2 vfat 7938-FA03 /boot/efi └─vda3 ext4 root 33b46ac5-7482-4aa5-8de0-60ab4c3a4c78 / vdb ├─vdb1 ├─vdb2 vfat 7938-FA03 └─vdb3 ext4 root 33b46ac5-7482-4aa5-8de0-60ab4c3a4c78Pada contoh ini, partisi root dari disk bermasalah
vdbadalahvdb3. Inilah partisi yang perlu Anda pasang. Penjelasan partisi-partisi tersebut sebagai berikut:-
vdb1/vdb2: Partisi ini berisi file boot sistem dan dapat diabaikan.
-
vdb3: Ini adalah partisi root yang berisi file sistem operasi dan data pengguna. Partisi ini harus dipasang.
-
-
Buat direktori dan pasang sistem file.
mkdir <mount_point> && sudo mount /dev/<partition_name> <mount_point>Parameter
Deskripsi
<partition_name>Nama partisi root dari disk bermasalah yang telah Anda identifikasi pada langkah sebelumnya.
<mount_point><mount point> kustom harus merupakan path kosong yang dimulai dengan
/dan harus unik.PentingJika Anda memasang sistem file pada direktori yang tidak kosong, file asli dalam direktori tersebut akan disembunyikan dan menjadi tidak dapat diakses. Lakukan dengan hati-hati.
Sebagai contoh, untuk memasang partisi target
vdb3ke direktori/testyang baru dibuat, jalankan perintahmkdir /test && sudo mount /dev/vdb3 /test. -
Periksa hasil pemasangan.
Jalankan perintah
lsblk. Jika partisi target memiliki titik pemasangan di kolomMOUNTPOINT, berarti sistem file berhasil dipasang.
-
-
-
Ubah file konfigurasi.
Edit file <mount_point>/etc/security/limits.conf. Ubah nilai parameter
hard nofiledansoft nofilemenjadi nilai default65535. Simpan file dan keluar.* soft nofile 65535 * hard nofile 65535 root soft nofile 65535 root hard nofile 65535-
Tanda bintang (
*) berlaku untuk semua pengguna, sedangkanrootberlaku untuk pengguna root. -
hard nofile: Menentukan batas keras jumlah file yang dapat dibuka. Nilai ini tidak boleh melebihi nilai parameter kernel<mount point>/proc/sys/fs/nr_open. Jika dilanggar, Anda mungkin tidak dapat login ke instans. -
soft nofile: Batas saat ini jumlah file yang dapat dibuka. Nilai ini tidak boleh melebihi batashard nofile. Jika dilanggar, konfigurasi ini akan diabaikan.Jika nilai
soft nofilelebih besar daripada nilaihard nofile, nilai efektifnofileadalah nilai parameterhard nofile.
-
-
Sambungkan kembali disk ke Instance ECS asal sebagai disk sistem.
-
Lepaskan pemasangan sistem file.
Ganti
<mount_point>dengan titik pemasangan yang sebenarnya.umount <mount_point>Sebagai contoh, jalankan perintah
umount /test. -
Lepaskan disk sistem yang telah diperbaiki.
-
Kembali ke Konsol ECS dan buka tab Block Storage pada halaman detail instans yang sehat.
-
Pada kolom Actions untuk disk sistem yang telah diperbaiki, klik Detach.
-
Pada kotak dialog Detach Disk, klik OK.
-
-
Sambungkan kembali disk sistem yang telah diperbaiki ke instans asal.
-
Buka tab Block Storage pada halaman detail instans bermasalah dan klik Attach Disk.
-
Pada halaman Attach to Instance, pilih disk sistem yang telah diperbaiki dari daftar Disk. Konfigurasikan Logon Credentials dan klik Next.
-
Pada halaman Partition Disk and Create and Mount File Systems, pilih Configure Later untuk menyelesaikan penyambungan.
-
-
Jalankan Instance ECS.
-
-
Login ke Instance ECS asal dan verifikasi bahwa instans berfungsi secara normal.
Rekomendasi
-
Tangani file sistem inti dengan hati-hati: Sebelum mengubah file sistem kritis, selalu buat snapshot manual. Pastikan Anda memahami risikonya dan hanya lakukan perubahan yang diperlukan.
-
Siapkan Pemantauan Peringatan: Pantau konfigurasi
ulimit -npada instans kritis. Dengan memeriksa secara berkala nilai waktu prosesulimit -nterhadap konfigurasi yang diharapkan, Anda dapat memverifikasi batas resource dan menerima peringatan jika terjadi perubahan yang tidak sah.
> Detach