Bagaimana cara meningkatkan batas maksimum file terbuka di Ubuntu 18.04?

16

Saya sudah menjalankan ulimit -n 65536, menambahkan baris berikut ke /etc/security/limits.conf:

*    soft nofile 65536
*    hard nofile 65536
alix soft nofile 65536
alix hard nofile 65536
root soft nofile 65536
root hard nofile 65536

Dan ditambahkan session required pam_limits.soke keduanya:

  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

Dan fs.file-max = 65536untuk /etc/sysctl.d/60-file-max.conf.

Namun, setelah memulai kembali dan menjalankan ulimit -nsesi saya, saya hanya mendapatkan 4.096 (sebelumnya 1024).

Apa yang saya lewatkan?

Alix Axel
sumber

Jawaban:

12

Dari manual:

 -n     The maximum number of open file descriptors (most
        systems do not allow this value to be set)

systemd memiliki opsi untuk ini:

$ more /etc/systemd/system.conf | grep NOFILE
#DefaultLimitNOFILE=

Tetapi ini juga hanya untuk pengaturan pengguna grafis. Hapus #dan Anda dapat mengaturnya ke 65536.

Komentar dari Daniel Fernández :

DefaultLimitNOFILE=65536 

mungkin juga dibutuhkan di

/etc/systemd/user.conf 
Rinzwind
sumber
1
Lupa menyebutkan, saya juga melakukan itu.
Alix Axel
1
@AlixAxel: Jawaban ini berhasil untuk saya, selain * - nofile 16384(saya hanya mencoba 16384) di /etc/security/limits.conf.
Doug Smythies
65k adalah asumsi dan akan diharapkan bahwa ada batas kode keras ke sisi atas dari apa yang diperbolehkan. Anda mungkin ingin memulai lebih rendah seperti yang ditunjukkan Doug;)
Rinzwind
Apa yang Anda maksud dengan "Tapi ini juga hanya untuk pengaturan pengguna grafis"?
sinan
1
Pengaturan catatan DefaultLimitNOFILE=65536mungkin juga diperlukan di/etc/systemd/user.conf
Daniel Fernández
1

Ubuntu 18.04 Langkah demi Langkah

Semoga semua ini membantu, cukup lama tetapi berhasil (dengan bukti)

Saya menemukan utas ini ketika menginstal MongoDb di Ubuntu 18.04

https://posidev.com/blog/2009/06/04/set-ulimit-parameters-on-ubuntu/

Seperti yang Anda lihat, ini sudah cukup tua namun berfungsi untuk saya.

Inilah yang saya lakukan.

  1. Pengaturan yang Disarankan MongoDb ( https://docs.mongodb.com/manual/reference/ulimit/#review-and-set-resource-limits )

    • -f (ukuran file): tidak terbatas
    • -t (waktu cpu): tidak terbatas
    • -v (memori virtual): tidak terbatas [1]
    • -l (ukuran terkunci-dalam-memori): tidak terbatas
    • -n (buka file): 64000
    • -m (ukuran memori): tidak terbatas [1] [2]
    • -u (proses / utas): 64000
  2. Periksa Batas saya saat ini

ubuntu @ isdb-stage: ~ $ ulimit -a
ukuran file inti (blok, -c) 0
ukuran data seg (kbytes, -d) tidak terbatas
prioritas penjadwalan (-e) 0
ukuran file (blok, -f) tidak terbatas
sinyal tertunda (-i) 7873
memori terkunci maksimal (kbytes, -l) 16384
ukuran memori maks (kbytes, -m) tidak terbatas
buka file (-n) 1024
ukuran pipa (512 byte, -p) 8
Antrian pesan POSIX (byte, -q) 819200
prioritas waktu nyata (-r) 0
ukuran stack (kbytes, -s) 8192
waktu cpu (detik, -t) tidak terbatas
proses pengguna maks (-u) 7873
memori virtual (kbytes, -v) tidak terbatas
kunci file (-x) tidak terbatas
  1. Catat apa yang perlu diubah

    • ukuran terkunci-dalam-memori , perlu diatur ke tak terbatas.
    • buka file , perlu diatur ke 64000
    • proses / utas * , perlu diatur ke 64000
  2. Apa yang dikatakan ubuntu tentang cara mengubah batas ini?

$ man limit.conf

NAMA
   batasan.conf - file konfigurasi untuk modul pam_limits

DESKRIPSI
   Modul pam_limits.so menerapkan batas ulimit, prioritas yang bagus, dan jumlah sesi login bersamaan untuk sesi login pengguna. Deskripsi sintaks file konfigurasi ini berlaku untuk

       File /etc/security/limits.conf dan file * .conf di file 
       direktori /etc/security/limits.d.
  1. Tampaknya cukup jelas, edit file /etc/security/limits.conf. Ok mari kita cari tahu ....

Ini adalah awal dari file itu, dan lihat itu bahkan memiliki instruksi dalam tentu saja, ingat ini adalah open source yang ditulis oleh orang baik! :)

    vi /etc/security/limits.conf

    # /etc/security/limits.conf 
    Baris #Each menggambarkan batas bagi pengguna dalam formulir:                                                                   
    #                                                                                
    #Dimana:                                                               
    # dapat:
    # - nama pengguna

(Lihatlah sendiri file tersebut jika Anda menginginkan detail lebih lanjut)
  1. Akhirnya lakukan perubahan. Karena MongoDb berjalan sebagai grup mongodb dan pengguna, itu akan menjadi ide yang baik untuk meningkatkan batas pengguna saja. Saya telah melihat '*' digunakan di sana-sini, bagi saya itu adalah risiko keamanan. Ini memberi segalanya pada server batasan ini, yang dapat digunakan untuk memaksimalkan server Anda. Jadi mari kita membuatnya hanya untuk pengguna mongodb.

Inilah perubahan saya: -

mongodb soft memlock tak terbatas
memong mongodb keras tak terbatas
mongodb soft nofile 64000
mongodb hard nofile 64000
mongodb soft nproc 64000
mongodb hard nproc 64000
  1. Akhirnya, akhirnya, ingat ini di entri man membatasi.conf.

    batasan.conf - file konfigurasi untuk modul pam_limits

    Lebih baik pastikan bahwa modul pam_limits dimuat sehingga semua ini membatasi pekerjaan. Untuk melakukan ini, Anda mengedit /etc/pam.d/common-session. Tentu saja ini juga ada di halaman manual.

sudo vi /etc/pam.d/common-session

# Tambahkan ini untuk memastikan pam_limits.so dimuat.
sesi diperlukan pam_limits.so

Reboot akan menunjukkan batas (untuk pengguna mongodb) telah diterapkan. Jika Anda menerapkannya menggunakan '*', Anda dapat memeriksa tanpa harus beralih ke pengguna mongodb. Cukup jalankan perintah ini.

$ ulimit -a

ukuran file inti (blok, -c) 0
ukuran data seg (kbytes, -d) tidak terbatas
prioritas penjadwalan (-e) 0
ukuran file (blok, -f) tidak terbatas
sinyal tertunda (-i) 7873
memori terkunci maksimal (kbytes, -l) tidak terbatas
ukuran memori maks (kbytes, -m) tidak terbatas
buka file (-n) 64000
ukuran pipa (512 byte, -p) 8
Antrian pesan POSIX (byte, -q) 819200
prioritas waktu nyata (-r) 0
ukuran stack (kbytes, -s) 8192
waktu cpu (detik, -t) tidak terbatas
proses pengguna maks (-u) 64000
memori virtual (kbytes, -v) tidak terbatas
kunci file (-x) tidak terbatas

Seperti yang dapat Anda lihat, lubbly semua diatur ke batas yang kita inginkan.

Bahasa Indonesia
sumber