Saya memiliki proses yang berjalan lama di Debian. Pada suatu saat ada kesalahan:
Terlalu banyak file yang terbuka.
Berlari:
ulimit -a
menunjukkan:
buka file (-n) 1024
Saya ingin menambah jumlah file terbuka dalam 2 kali. Setelah eksekusi
ulimit -n 2048
batas aktif sampai akhir sesi saya, yang tidak berlaku untuk tugas tersebut.
Bagaimana saya bisa meningkatkan jumlah file terbuka secara permanen?
sumber
Ada juga "total maks" dari file terbuka yang diatur dalam kernel, Anda dapat memeriksa pengaturan saat ini dengan:
Dan tetapkan nilai baru dengan:
Jika Anda ingin menjaga konfigurasi antara reboot tambahkan
untuk
Untuk memeriksa penggunaan file maks saat ini:
sumber
0
, itu hanya berarti bahwa jumlah file yang dialokasikan benar-benar cocok dengan jumlah file yang digunakan.49152 0 18446744073709551615
. Saya tidak mengerti mengapa dua kolom pertama tidak bertambah hingga yang ketiga. Dan jika saya memiliki 1,8 triliun triliun yang tersedia, saya tidak melihat bagaimana saya menggunakan semuanya.Seperti yang dikatakan orang lain, Anda dapat menerapkan batasan spesifik per pengguna atau grup di /etc/security/limits.conf.
Catatan: ulimit -n menunjukkan batas lunak.
akan menunjukkan batas keras.
Ini membuat ulimit -a dan ulimit -n keluaran cukup membingungkan jika misalnya, Anda menaikkan jumlah file dari 1024 ke 4096, seperti yang Anda harapkan untuk melihat output batas keras, tetapi Anda masih melihat 1024 yang merupakan soft membatasi.
Juga, ingatlah bahwa batasan ini diberlakukan per login, jadi login kembali di shell baru dan periksa perubahan Anda, jangan berharap mereka akan disebarkan ke login yang ada.
sumber
Ketahuilah bahwa jika Anda menjalankan proses Anda dengan memulai ulimits pengaturan start-stop-daemon di /etc/security/limits.conf tidak berfungsi. Jika Anda misalnya ingin menaikkan batas file terbuka untuk kucing jantan ke 20000, Anda perlu menambahkan ini ke baris ke
/etc/default/tomcat
:Saya mengalami masalah ini pada debian 6.0.4 Untuk proses lain jawaban yang diberikan akan membantu.
sumber
Itu tergantung pada bagaimana Anda memulai proses jangka panjang Anda. Jika dimulai saat boot (via /etc/rcX.d/* skrip) maka Anda harus memasukkan panggilan ulimit ke skrip startup Anda karena batas defaultnya ditentukan oleh kernel dan itu tidak dapat disetel tanpa mengkompilasi ulang.
Menggunakan
/etc/security/limits.conf
bisa berfungsi jika Anda menggunakannyacron
untuk memulainya misalnya dengan entri seperti ini:Itu seharusnya bekerja karena /etc/pam.d/cron mengaktifkan pam_limits.so.
sumber
Anda dapat menambahkan ini di /etc/security/limits.conf
simpan lalu reboot.
sumber
Perintah yang sangat bagus adalah
ulimit -n
tetapi ada masalah dengan terlalu banyak koneksi dan terlalu banyak file yang terbuka:sumber
ulimit -a
, bukanulimit -n
.