Bagaimana cara menetapkan nilai ulimit secara permanen?


17

Pada Debian Wheezy, ulimit -aberikan:

open files                      (-n) 1024

Saya menambahkan ini ke /etc/security/limits.conf

*                hard    nofile          64000

lalu reboot.

Dan ulimit -amasih memberikan jumlah maksimum file terbuka 1024. Adakah yang bisa menjelaskannya?


apakah ini mungkin host virtual?
Dennis Nolte

tidak, ini server mongodb
Icu

Jawaban:


13

Opsi satu: Anda tidak mengatur softlimit lebih tinggi juga.

Solusi yang mungkin:

di /etc/security/limits.conf tambahkan

* soft nofile 2048

tes dengan

ulimit -n 2048 

Opsi dua: Anda masuk sebagai pengguna dan dalam beberapa file "config" (profil, bashrc, sesuatu seperti ini) batas lunak diatur ke nilai yang lebih rendah.

Kemungkinan solusi untuk grit untuk ulimit di folder dll Anda dan / atau folder home.

Peringatan: Bergantung pada jumlah file / direktori yang Anda miliki di sana, Anda mungkin ingin mempertimbangkan hanya direktori / file tertentu

ps: ada banyak pertanyaan serupa di sini Anda mungkin ingin membaca.

Khusus Keras vs. Batas Lunak

Baca di sini untuk kemungkinan solusi lain yang lebih detail. Terlalu Banyak Buka File


Sebenarnya, saya mencoba untuk menetapkan hanya batas keras ke 64000. Jadi batas lunak masih di 1024. Sekarang saya mencoba untuk menetapkan batas lunak ke 64000 + hard = 72000. Tetapi itu tidak berhasil. Saya mencoba juga "* - nofile 64000" dan saya mendapatkan hasil yang sama.
Icu

Setelah membaca "Terlalu Banyak Buka File", saya pikir pengaturan kernel akan mengesampingkan pengaturan Limit.conf tetapi: "fs.file-max = 4933738"
Icu

@Icu coba jawaban dari yang ini juga: serverfault.com/questions/93234/… mungkin terkait dengan shell Anda
Dennis Nolte

Saya menambahkan 'sesi diperlukan pam_limits.so' ke /etc/pam.d/lain dan sesi umum tetapi tidak membantu ... Sebagai alternatif, saya menambahkan 'ulimit -n' ke skrip init saya dan berfungsi tapi saya heran mengapa saya tidak bisa mendapatkan nilai yang benar di shell saya.
Icu

19

Ada bug di Debian. Untuk menambah ulimitAnda perlu menambahkan ini ke /etc/pam.d/common-sessionfile:

session required pam_limits.so

dan di /etc/security/limits.conftambahkan:

*               soft    nofile          65535
*               hard    nofile          65535

Kemudian reboot sistem.


1
tidak perlu bagi saya untuk membuat perubahan pada /etc/pam.d/common-sessionfile. itu bekerja hanya dengan menambahkan dua baris lainnya ke limits.conffile :-)
Francesco Casula

Anda tidak perlu reboot.
David Goodwin

Ini brutal. Pada debian 7 sekarang, dan ini tidak berfungsi. Tidak yakin apa yang harus dilakukan :( - Saya mungkin membuka pertanyaan baru
NiCk Newman

12
Ledakan. *wildcard tidak berfungsi untuk root. Saya menambahkan rootbukan *, dan itu berfungsi. Terima kasih!
NiCk Newman

@FrancescoCasula - versi Debian apa itu? Hanya mencoba mencari tahu apakah ini benar-benar bug, dan jika masih ada ...
UpTheCreek

0

Dalam kasus saya Apache pada Debian 10 di atas tidak membantu meskipun ini berhasil:

echo "APACHE_ULIMIT_MAX_FILES='ulimit -n 16384'" >> /etc/apache2/envvars
service apache2 restart

Saya memeriksa dengan:

cat /proc/$pid/limits

..where $pidadalah ID proses dari salah satu proses Apache.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.