Saya mendapat kesalahan "nampaknya terlalu banyak deskriptor file" pada nginx. Setelah banyak mencari, solusinya jelas untuk meningkatkan jumlah deskriptor file yang tersedia untuk nginx. Tetapi tidak ada info yang cukup di luar sana bagi saya untuk merasa nyaman melakukan ini dengan cara yang bermakna dan aman. Berikut adalah poin-poin utama yang dibahas oleh sebagian besar forum / email:
- OS memiliki batas deskriptor file total sendiri (pada sistem saya,
cat /proc/sys/fs/file-max
output "100678") - setiap pengguna juga dapat memiliki batasnya sendiri (tetapi di sistem saya, berjalan
ulimit
karena setiap pengguna menampilkan "tidak terbatas" lihat pembaruan di bagian bawah dengan lebih detail ) - beberapa orang mengatakan sesuatu seperti apa yang dikatakan orang ini : 'Directive worker_rlimit_nofile tidak menentukan "berapa banyak", itu adalah batas sistem operasi yang berlaku. Directive worker_rlimit_nofile hanya memungkinkan cara cepat dan kotor untuk memperbesar batas ini jika itu tidak cukup. ' Jadi saya kira implikasinya adalah bahwa "lebih baik" untuk menetapkan batas untuk pengguna OS nginx daripada di konfigurasi?
Saya hanya bisa memasukkan nilai worker_rlimit_nofile lebih besar dari jumlah koneksi per pekerja dan menyebutnya sehari, tapi saya merasa saya tidak benar-benar tahu apa yang terjadi di sini.
- mengapa batas per pekerja lebih kecil dari batas OS?
- Bagaimana cara mengetahui batas saya sekarang?
pembaruan : untuk root dan pengguna normal, keluaran ulimit "tidak terbatas", TETAPI ulimit -Hn
dan ulimit -Sn
keduanya keluaran 1024
setsebool -P httpd_setrlimit 1
sehingga nginx memiliki izin untuk mengatur rlimit-nya.Harus memeriksa sumber untuk jujur, tetapi cukup rendah.
Saya menggunakan
worker_rlimit_nofile 15000;
dan tidak memiliki masalah, Anda dapat dengan aman meningkatkannya, meskipun, kemungkinan kehabisan file deskriptor sangat kecil.sumber