Bagaimana saya dapat meningkatkan batas file terbuka untuk semua proses?

32

Saya bisa menggunakan ulimit tapi saya pikir itu hanya mempengaruhi sesi shell saya. Saya ingin batas ditingkatkan untuk semua proses. Ini di Red Hat.

countermode
sumber
Ngomong-ngomong, Red Hat versi apa? RHEL5?
mattdm

Jawaban:

26

Jawaban Justin memberi tahu Anda cara meningkatkan jumlah file terbuka yang tersedia total ke seluruh sistem. Tapi saya pikir Anda bertanya bagaimana meningkatkan batas per pengguna, secara global. Jawabannya adalah menambahkan baris berikut ke /etc/security/limits.conf:

*               soft    nofile            2048
*               hard    nofile            2048

(Di mana * berarti semua pengguna.)

Ada beberapa dokumentasi ringkasan di file itu sendiri dan di man limits.conf. Ini diimplementasikan melalui pam_limits.somodul yang dipanggil untuk berbagai layanan yang dikonfigurasi di /etc/pam.d/.

Dan, saya harus akui, saya tidak tahu dari mana asal 1024 default itu. Dan percayalah, saya melihat. Saya bahkan mencoba tanpa modul pam_limits dikonfigurasi, dan itu masih ada. Pasti ada hard-coded di suatu tempat, tapi saya tidak yakin di mana.

mattdm
sumber
2
Hmm ... Saya mengatur ini dengan benar. Keluar dari SSH dan kembali lagi dan batas lunak saya masih diatur ke 1024. Apakah ada sesuatu yang saya lewatkan untuk menjadikan ini "aktif"? Terima kasih.
Joshua Pinter
@mattdm - Perlu disebutkan bahwa pada beberapa distribusi Linux file yang disebutkan akan berada di bawah: /etc/limits.conf
Guy Avraham
13

Menurut artikel Linux Meningkatkan Jumlah Maksimum File Terbuka / Penjelas File (FD) , Anda dapat meningkatkan batas file terbuka dengan menambahkan entri ke /etc/sysctl.conf.

Tambahkan direktif konfigurasi sebagai berikut:

fs.file-max = 100000

Kemudian simpan dan tutup file tersebut. Pengguna harus keluar dan masuk lagi untuk perubahan yang diberlakukan atau mereka cukup mengetik perintah berikut:

# sysctl -p

Anda juga dapat memverifikasi pengaturan Anda dengan perintah:

# cat /proc/sys/fs/file-max
Justin Ethier
sumber
Saya skeptis tentang keharusan untuk keluar dan masuk lagi untuk pengaturan khusus ini, yang meliputi seluruh sistem. (Itu berlaku untuk hampir semua hal di sysctl ...)
mattdm
13

Meningkatkan jumlah maksimum file terbuka ulimit di Linux

1.Langkah: buka sysctl.conf dan tambahkan baris ini fs.file-max = 65536

$ vi /etc/sysctl.conf

tambahkan baris baru dan

fs.file-max = 65536

Simpan dan keluar.

2.Langkah:

$ vi /etc/security/limits.conf

dan tambahkan di bawah ini

* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535

simpan dan keluar periksa file terbuka maks ulimit

# ulimit -a

....
open files                      (-n) 65535
minhas23
sumber
6

Tetapi jika Anda mencoba untuk menambah jumlah maksimum file yang terbuka dari layanan seperti MariaDB atau sesuatu yang lain (menggunakan systemd ) yang harus Anda lakukan langsung dalam file .service

/lib/systemd/system/<servicename>.service

Akan menjadi sesuatu seperti ini:

[Unit]
Description=Some Daemon
After=syslog.target network.target

[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon

[Install]
WantedBy=multi-user.target

Jawaban sepenuhnya ada di sini: Meningkatkan nproc untuk proses yang diluncurkan oleh systemd pada CentOS 7

Matheus Baldasso
sumber
Hal ini perlu ditingkatkan, karena keberadaan systemddan perubahannya yang terus-menerus meningkat di seluruh ekosistem Linux. Meskipun, saya akan menyarankan untuk mengedit jawaban cp -r /lib/systemd/system/mariadb.service /etc/systemd/system/dan membuat perubahan pada file itu, daripada file layanan seluruh sistem yang disediakan oleh paket.
ILMostro_7
3

SUPLEMENT:

Anda mungkin menemukan konfigurasi di tempat yang berbeda: /etc/security/limits.d/*.conf

Saya harus memodifikasinya. Itu tidak berhasil tanpanya. Formatnya sama dengan untuklimits.conf

Waldemar Wosiński
sumber
Saya juga harus memperbarui file ini agar pengaturan dapat sepenuhnya mengambil server CentOS kami.
John Eisbrener