Kami baru-baru ini mulai menguji aplikasi kami dan menyadari bahwa itu kehabisan file deskriptor setelah sekitar 24 jam.
Kami menjalankan RHEL 5 pada Dell 1955:
CPU: 2 x Dual Core 2.66GHz 4MB 5150 / 1333FSB RAM: 8GB RAM HDD: 2 x 160GB 2,5 "SATA Hard Drives
Saya memeriksa batas deskriptor file dan ditetapkan pada 1024. Mengingat aplikasi kita berpotensi memiliki sekitar 1000 koneksi masuk serta 1000 koneksi keluar, ini tampaknya cukup rendah. Belum lagi file aktual yang perlu dibuka.
Pikiran pertama saya adalah hanya meningkatkan parameter ulimit -n dengan beberapa urutan besarnya dan kemudian menjalankan kembali tes tetapi saya ingin mengetahui kemungkinan konsekuensi pengaturan variabel ini terlalu tinggi.
Adakah praktik terbaik untuk menetapkan ini selain mencari tahu berapa banyak deskriptor file yang secara teoritis dapat dibuka oleh perangkat lunak Anda?
ulimit
batas tidak per pengguna, tapi per proses! Lihat unix.stackexchange.com/questions/55319/... Danfs.file-max
pengaturannya adalah untuk server secara keseluruhan (jadi semua proses dilakukan bersamaan).Anda selalu bisa saja
Selama situasi 'beban tinggi' untuk melihat berapa banyak deskriptor file yang digunakan.
Untuk maksimum - itu hanya tergantung pada apa yang Anda lakukan.
sumber
8288 0 793377
!Jika deskriptor file adalah soket tcp, dll, maka Anda berisiko menghabiskan banyak memori untuk buffer soket dan objek kernel lainnya; memori ini tidak akan bisa ditukar.
Tetapi sebaliknya, tidak, pada prinsipnya seharusnya tidak ada masalah. Konsultasikan dokumentasi kernel untuk mencoba mencari tahu berapa banyak memori kernel yang akan digunakan, dan / atau mengujinya.
Kami menjalankan server database dengan ~ 10k file deskriptor terbuka (kebanyakan pada file disc nyata) tanpa masalah besar, tetapi mereka 64-bit dan memiliki banyak ram.
Pengaturan ulimit adalah per-proses, tetapi ada batas sistem juga (32 k saya pikir secara default)
sumber
Saya pribadi tidak mengetahui adanya praktik terbaik. Ini agak subjektif tergantung pada fungsi sistem.
Ingat bahwa 1024 yang Anda lihat adalah batas per pengguna dan bukan batas seluruh sistem. Pertimbangkan berapa banyak aplikasi yang Anda jalankan di sistem ini. Apakah ini satu-satunya? Apakah pengguna yang menjalankan aplikasi ini melakukan hal lain? (Yaitu apakah Anda memiliki manusia yang menggunakan akun ini untuk masuk dan menjalankan skrip yang berpotensi melarikan diri?)
Mengingat kotak hanya menjalankan aplikasi yang satu ini dan akun yang menjalankan aplikasi tersebut hanya untuk tujuan itu, saya tidak melihat ada salahnya meningkatkan batas Anda seperti yang Anda sarankan. Jika itu adalah tim pengembang in-house, saya akan meminta pendapat mereka. Jika berasal dari vendor pihak ketiga, mereka mungkin memiliki persyaratan atau rekomendasi khusus.
sumber
Ini menurut saya salah satu pertanyaan yang paling baik dijawab dengan "mengujinya di lingkungan pengembangan". Saya ingat bertahun-tahun yang lalu Sun gugup ketika Anda mengacaukan ini, tetapi tidak segugup itu. Batasnya pada waktu itu juga 1024, jadi saya sedikit terkejut melihat bahwa itu sama untuk Linux sekarang, sepertinya itu harus lebih tinggi.
Saya menemukan tautan berikut mendidik ketika saya mencari jawaban untuk pertanyaan Anda di Google: http://www.netadmintools.com/art295.html
Dan yang ini juga: https://stackoverflow.com/questions/1212925/on-linux-set-maximum-open-files-to-unlimited-possible
sumber