halo sobat sekolahlinux, kali ini saya akan share kasus dari error nginx, error ini terjadi pada server production salah satu client, errornya kurang lebih seperti ini jika di lihat di log error nginx “accept4() failed (24: Too many open files)” si client protest kenapa setiap trafik sedang ramai kok terjadi 500 internal server error, setelah lihat log dan baca-baca tentang case ini akhirnya saya mengambil kesimpulan error tersebut terjadi dikarenakan trafik tinggi sehingga beban request open file pun meningkat dan menyentuh batas limit dari server tersebut serta nginxnya (tapi jika saya salah silahkan dikoreksi ya hehe), nah untuk case ini berikut ini beberapa tahapan yang saya lakukan.
pertama kita cek dulu limit maximal file yg ada di os server kita
cat /proc/sys/fs/file-max
maka hasilnya akan seperti dibawah ini
120000
lalu check dulu limit file pada os server kalian
ulimit -n ulimit -Hn ulimit -Sn
defaultnya limit pada level OS biasanya 1024.
sekarang tingkatkan open file pada level OS, caranya dengan edit / tambahkan rule dibawah ini pada /etc/sysctl.conf
fs.file-max = 120000
lalu buka juga file /etc/security/limits.conf lalu edit / tambahkan rule dibawah ini didalamnya
* soft nofile 120000 * hard nofile 120000
lalu jalankan perintah ini pada console anda
ulimit -n 120000
lalu jalankan perintah ini untuk menerapkan rule yang kita tambahkan diatas
sysctl -p
sekarang kita tingkatkan limit open file pada nginx, caranya dengan menambahkan rule dibawah ini pada /etc/nginx/nginx.conf tepat dibawah rule “worker_processes”
worker_rlimit_nofile 120000;
jika sudah restart nginx kalian, pada beberapa kasus tertentu yang saya baca di internet dibutuhkan reboot OS, namun jika dirasa yakin tidak perlu untuk reboot OS. saya sendiri tidak reboot OS hanya restart nginx. dan alhamdulillah tidak ada masalah
selamat mencoba ya 😀 dan selamat membaca.