Meningkatkan ulimit pada CentOS

18

Kami memiliki kotak CentOS yang saya coba tingkatkan jumlah file maksimum yang dapat dibuka pengguna. Saat ini ketika saya menjalankan ulimit -Snsaya mendapat 1024dan ulimit -Hnmemberi 4096. Saya perlu nomor itu sekitar 6000.

Dalam /etc/sysctl.confsaya sudah mengatur fs.file-max = 100000. Di /etc/security/limits.confSaya memiliki set berikut:

username soft nofile 6000
username hard nofile 65535

Saya sudah keluar dan masuk lagi usernametetapi masih belum melihat perubahan saya. Apa yang saya perlukan agar nilai ini diubah?

Yang saya miliki /etc/security/limits.dhanyalah 90-nproc.conf. Saya juga memastikan bahwa ulimit tidak dipanggil dalam .bash_profile atau .bashrc saya.

Ketika saya menjalankannya sysctl -pmemuntahkan pengaturan yang saya inginkan dan itu menunjukkan nilai untuk fs.file-maxyang saya inginkan. Tetapi ketika saya berlari ulimit -Sn, saya mendapatkan 1048. Jika saya mencoba lari sysctl --systemsaya mendapatkan error: Unknown parameter "--system".

tubaguy50035
sumber
Apakah Anda mencoba menyalakan ulang? Sejauh yang saya tahu pengaturan tersebut dibaca saat boot sistem.
Kamil
Anda tidak perlu reboot untuk itu.
Xavier Lucas

Jawaban:

14

Untuk memaksa /etc/sysctl.confagar dibaca lagi jalankan sysctl -p.

File /etc/security/limits.confdibaca oleh shell login dan Anda harus menutup jendela sesi aktif jika dalam GUI. Untuk login jarak jauh, ini berlaku pada relog.

Xavier Lucas
sumber
1
Berlari itu, masih tidak melihat perubahan setelah relog.
tubaguy50035
@ tubaguy50035 fs.file-maxadalah jumlah maksimum file terbuka pada sistem. Ini adalah batas yang sulit dan itu tidak akan tercermin oleh ulimitpanggilan dalam kasus Anda.
Xavier Lucas
Oh baiklah. Haruskah saya tidak membuka terlalu banyak file lagi?
tubaguy50035
@ tubaguy50035 Tidak terkait. Batas keras sistem yang akan menimpa nomor apa pun di atas dalam membatasi.conf. Tapi batasan.conf masih apa yang diterapkan. Bisakah Anda mencoba untuk menetapkan batas keras & lunak dengan ulimit langsung di sesi baru dan melihat apakah Anda mendapatkan maksimum yang sama? Sesuatu sepertinya mengesampingkan konfigurasi Anda.
Xavier Lucas
Dikatakan operasi tidak diizinkan. Apakah saya perlu memberi pengguna akses ke sesuatu? Saya lebih suka pengguna web tidak memiliki hak root.
tubaguy50035
6

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:

sysctl -p /etc/sysctl.conf
sysctl -w fs.file-max=100000
sysctl --system

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.

Boscoe
sumber
Saya menggunakan CentOS 6.5. Juga memperbarui pertanyaan saya dengan hasil beberapa di antaranya.
tubaguy50035