Come aumentare il limite massimo di file aperti su Ubuntu 18.04?


16

Ho eseguito ulimit -n 65536, ho aggiunto le seguenti righe a /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

E aggiunto session required pam_limits.soad entrambi:

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

E fs.file-max = 65536a /etc/sysctl.d/60-file-max.conf.

Tuttavia, dopo aver riavviato ed eseguito la ulimit -nmia sessione, ottengo solo 4096 (era 1024 prima).

Cosa mi sto perdendo?

Risposte:


12

Dal manuale:

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

systemd ha un'opzione per questo:

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

Ma questo è anche solo per le impostazioni grafiche dell'utente. Rimuovere #e è possibile impostarlo su 65536.

Commento di Daniel Fernández :

DefaultLimitNOFILE=65536 

potrebbe anche essere necessario in

/etc/systemd/user.conf 

1
Ho dimenticato di menzionarlo, l'ho fatto anche io.
Alix Axel,

1
@AlixAxel: questa risposta ha funzionato per me, oltre a * - nofile 16384(stavo solo provando il 16384) in /etc/security/limits.conf.
Doug Smythies,

Il 65k è un presupposto e ci si aspetterebbe che ci siano limiti codificati nella parte superiore di ciò che è permesso. Potresti iniziare in basso come indicato da Doug;)
Rinzwind il

Cosa intendi con "Ma questo vale anche per le impostazioni grafiche dell'utente"?
sinan

1
L'impostazione della nota DefaultLimitNOFILE=65536potrebbe essere necessaria anche in/etc/systemd/user.conf
Daniel Fernández,

2

Ubuntu 18.04 Step by Step

Spero che tutto ciò aiuti, abbastanza a lungo ma funziona (con prova)

Mi sono imbattuto in questo thread durante l'installazione di MongoDb su Ubuntu 18.04

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

Come puoi vedere è piuttosto vecchio ma funziona per me.

Ecco cosa ho fatto.

  1. Impostazioni consigliate da MongoDb ( https://docs.mongodb.com/manual/reference/ulimit/#review-and-set-resource-limits )

    • -f (dimensione del file): illimitato
    • -t (tempo CPU): illimitato
    • -v (memoria virtuale): illimitato [1]
    • -l (dimensioni della memoria bloccata): illimitato
    • -n (file aperti): 64000
    • -m (dimensione della memoria): illimitato [1] [2]
    • -u (processi / thread): 64000
  2. Controlla i miei limiti attuali

ubuntu @ isdb-stage: ~ $ ulimit -a
dimensione del file core (blocchi, -c) 0
dimensione seg dati (kbyte, -d) illimitata
priorità di pianificazione (-e) 0
dimensione del file (blocchi, -f) illimitata
segnali in sospeso (-i) 7873
memoria massima bloccata (kbyte, -l) 16384
dimensione massima della memoria (kbyte, -m) illimitata
file aperti (-n) 1024
dimensione del tubo (512 byte, -p) 8
Code dei messaggi POSIX (byte, -q) 819200
priorità in tempo reale (-r) 0
dimensione dello stack (kbyte, -s) 8192
tempo della CPU (secondi, -t) illimitato
processi utente max (-u) 7873
memoria virtuale (kbyte, -v) illimitata
blocchi di file (-x) illimitati
  1. Prendi nota di ciò che richiede un cambiamento

    • dimensioni della memoria bloccata , deve essere impostato su illimitato.
    • file aperti , deve essere impostato su 64000
    • processi / thread * , deve essere impostato su 64000
  2. Cosa dice ubuntu su come modificare questi limiti?

$ man limits.conf

NOME
   limits.conf - file di configurazione per il modulo pam_limits

DESCRIZIONE
   Il modulo pam_limits.so applica limiti ulimit, una buona priorità e un numero limitato di sessioni di accesso simultaneo alle sessioni di accesso dell'utente. Questa descrizione della sintassi del file di configurazione si applica a

       File /etc/security/limits.conf e file * .conf nel file 
       /etc/security/limits.d directory.
  1. Sembra abbastanza chiaro, modifica il file /etc/security/limits.conf. Ok cerchiamo di capirlo ....

Ecco l'inizio di quel file, e ovviamente ha anche le istruzioni all'interno, ricordate che questo è open source scritto dai bravi ragazzi! :)

    vi /etc/security/limits.conf

    # /etc/security/limits.conf 
    # Ogni riga descrive un limite per un utente nel modulo:                                                                   
    #                                                                                
    #Dove:                                                               
    # può essere:
    # - un nome utente

(Dai un'occhiata al file tu stesso se vuoi maggiori dettagli)
  1. Finalmente apporta le modifiche. Dato che MongoDb funziona come gruppo mongodb e utente, sarebbe una buona idea aumentare solo i limiti degli utenti. Ho visto '*' usato qua e là, per me è un rischio per la sicurezza. Offre a tutti quanti sul server questi limiti, che potrebbero essere utilizzati per massimizzare il server. Quindi, li facciamo solo per l'utente di mongodb.

Ecco le mie modifiche: -

mongodb soft memlock illimitato
mongodb hard memlock illimitato
mongodb soft nofile 64000
mongodb hard nofile 64000
mongodb soft nproc 64000
mongodb hard nproc 64000
  1. Infine, finalmente, ricordalo nella voce man limits.conf.

    limits.conf - file di configurazione per il modulo pam_limits

    Meglio assicurarsi che il modulo pam_limits sia caricato in modo che tutto ciò limiti roba funzioni. Per fare ciò, modifica /etc/pam.d/common-session. Naturalmente questo è anche nella pagina man.

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

# Aggiungi questo per assicurarsi che pam_limits.so sia caricato.
sessione richiesta pam_limits.so

Un riavvio mostrerà i limiti (per l'utente mongodb) che sono stati applicati. Se invece li hai applicati usando '*', puoi controllare senza dover passare all'utente mongodb. Esegui questo comando.

$ ulimit -a

dimensione del file core (blocchi, -c) 0
dimensione seg dati (kbyte, -d) illimitata
priorità di pianificazione (-e) 0
dimensione del file (blocchi, -f) illimitata
segnali in sospeso (-i) 7873
memoria massima bloccata (kbyte, -l) illimitata
dimensione massima della memoria (kbyte, -m) illimitata
file aperti (-n) 64000
dimensione del tubo (512 byte, -p) 8
Code dei messaggi POSIX (byte, -q) 819200
priorità in tempo reale (-r) 0
dimensione dello stack (kbyte, -s) 8192
tempo della CPU (secondi, -t) illimitato
processi utente max (-u) 64000
memoria virtuale (kbyte, -v) illimitata
blocchi di file (-x) illimitati

Come puoi vedere, spumeggiante spumeggiante tutto impostato sui limiti che volevamo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.