Kami memiliki kotak CentOS yang saya coba tingkatkan jumlah file maksimum yang dapat dibuka pengguna. Saat ini ketika saya menjalankan ulimit -Sn
saya mendapat 1024
dan ulimit -Hn
memberi 4096
. Saya perlu nomor itu sekitar 6000.
Dalam /etc/sysctl.conf
saya sudah mengatur fs.file-max = 100000
. Di /etc/security/limits.conf
Saya memiliki set berikut:
username soft nofile 6000
username hard nofile 65535
Saya sudah keluar dan masuk lagi username
tetapi masih belum melihat perubahan saya. Apa yang saya perlukan agar nilai ini diubah?
Yang saya miliki /etc/security/limits.d
hanyalah 90-nproc.conf
. Saya juga memastikan bahwa ulimit tidak dipanggil dalam .bash_profile atau .bashrc saya.
Ketika saya menjalankannya sysctl -p
memuntahkan pengaturan yang saya inginkan dan itu menunjukkan nilai untuk fs.file-max
yang saya inginkan. Tetapi ketika saya berlari ulimit -Sn
, saya mendapatkan 1048. Jika saya mencoba lari sysctl --system
saya mendapatkan error: Unknown parameter "--system"
.
Jawaban:
Untuk memaksa
/etc/sysctl.conf
agar dibaca lagi jalankansysctl -p
.File
/etc/security/limits.conf
dibaca oleh shell login dan Anda harus menutup jendela sesi aktif jika dalam GUI. Untuk login jarak jauh, ini berlaku pada relog.sumber
fs.file-max
adalah jumlah maksimum file terbuka pada sistem. Ini adalah batas yang sulit dan itu tidak akan tercermin olehulimit
panggilan dalam kasus Anda.Seperti yang dikatakan poster lain, Anda harus memiliki sysctl untuk menetapkan nilai di kernel yang sedang berjalan. Ada beberapa cara Anda dapat mengatur nilai tanpa me-reboot:
IMHO metode terakhir adalah yang terbaik, karena mereplikasi urutan pengaturan akan diterapkan selama boot (dan dengan demikian jika Anda memiliki konflik itu akan menjadi jelas).
Catatan: Saya tidak yakin versi CentOS yang Anda gunakan, tetapi pada 7 setidaknya saya mengalami masalah di mana jika dracut membangun kembali initramfs dengan alasan apa pun (seperti ketika menginstal modul kernel baru) itu akan menyalin isi /etc/sysctl.* ke dalam initramfs, yang kemudian akan dieksekusi oleh systemd-sysctl selama fase itu, bahkan jika Anda kemudian menghapus entri-entri itu dari /etc/sysctl.conf.
Dalam lingkungan saya, saya telah mengedit modul systemd dracut untuk mengecualikan /etc/sysctl.* dari lingkungan itu (karena pengaturan tersebut akan ditetapkan setelah rootfs di-mount dan systemd-sysctl berjalan kembali). Itu hanya gotcha yang mungkin Anda temui.
sumber