Bagaimana cara mengkonfigurasi proses buka batas file pengguna?

8

Batas buka file default per proses adalah 1024 on-say-Linux. Untuk daemon tertentu ini tidak cukup. Jadi, pertanyaannya: Bagaimana cara mengubah batas file terbuka untuk pengguna tertentu?

maxschlepzig
sumber

Jawaban:

16

Di Linux Anda dapat mengkonfigurasinya melalui limits.conf, mis. Via

# cd /etc/security
# echo debian-transmission - nofile 8192 > limits.d/transmission.conf

(yang menetapkan batas keras dan lunak untuk proses yang dimulai di bawah transmisi debian pengguna ke 8192)

Anda dapat memverifikasi perubahan melalui:

# sudo -u debian-transmission bash -c "ulimit -a"
[..]
open files                      (-n) 8192
[..]

Jika daemon sudah berjalan, itu harus diulang kembali sehingga batas baru diambil. Jika daemon dimulai secara manual dari sesi pengguna, pengguna harus masuk kembali untuk mendapatkan batas baru.

Sebagai alternatif, Anda juga dapat menentukan batas tambahan secara langsung /etc/security/limits.conf, tentu saja - tetapi saya lebih suka .dpendekatan direktori untuk pemeliharaan yang lebih baik.

Untuk menerapkan batas lunak / keras yang berbeda gunakan dua entri, mis

debian-transmission soft nofile 4096
debian-transmission hard nofile 8192

(alasan di balik ini: nilai lunak ditetapkan setelah pengguna masuk tetapi proses pengguna diizinkan untuk meningkatkan batas hingga batas keras)

The limits.conf/ limits.dkonfigurasi digunakan oleh pam_limits.so, yang diaktifkan secara default pada distribusi Linux saat ini.

Terkait

Ada juga batas seluruh sistem di Linux, /proc/sys/fs/file-max:

File ini menetapkan batas seluruh sistem pada jumlah file yang terbuka untuk semua proses.

Misalnya default pada Ubuntu 10.04:

$  cat /proc/sys/fs/file-max
786046

File pseudo /proc/sys/fs/file-nrmemberikan informasi lebih lanjut, misalnya

$ cat /proc/sys/fs/file-nr
1408    0   786046

jumlah pegangan file yang dialokasikan (yaitu, jumlah file yang saat ini dibuka); jumlah pegangan file gratis; dan jumlah maksimum menangani file

Jadi, di satu sisi, Anda juga mungkin harus menyesuaikan file-maxbatas sistem-lebar , dalam hal ini sangat kecil dan / atau sistem sudah sangat dimuat. Di sisi lain, peningkatan saja file-maxtidak cukup, karena tidak mempengaruhi batas lunak / keras yang ditegakkan oleh mekanisme pam_limits.

Untuk mengubah file-maxpada baris perintah (tidak perlu reboot):

# sysctl -w fs.file-max=786046

Untuk perubahan permanen menambahkan fs.file-max=786046ke /etc/sysctl.confatau /etc/sysctl.d.

Batas atas aktif fs.file-maxdicatat dalam fs.nr_open. Misalnya, (lagi) di Ubuntu 10.04:

$ sysctl -n fs.nr_open
1048576

(yaitu 1024 * 1024)

Sysctl ini juga dapat dikonfigurasi.

maxschlepzig
sumber
1
Terima kasih atas sedikit informasi terakhir - Saya menggaruk-garuk kepala saya mencoba mencari tahu mengapa saya tidak dapat menetapkan batas pengguna nofile lebih besar dari
1048576 di /etc/security/limits.conf