Perché non può superare 4096 file aperti massimi per utente non root?

12

Non riesco ad aumentare il limite di nofile per gli utenti non root su Ubuntu 14.04, nonostante segua ogni risposta StackExchange relativa a questo problema. Finora ho:

$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000

$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required        pam_limits.so
/etc/pam.d/common-session-noninteractive:session required        pam_limits.so

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

Riavviato, loggato e:

$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted

ancora sembra in qualche modo un limite di 4096 max per utenti non root.

    
posta Caffeine Coma 09.03.2015 - 20:30
fonte

3 risposte

12

Usando Ubuntu 14.04 ho ottenuto il limite rigido descritto:

user@notebook:~$ ulimit -Hn 4096  

Potrei abbassarlo usando ulimit, ma non aumentarlo, proprio come la domanda lo descrive. Come il manuale di ulimit descrive:

  

solo root può aumentare il limite rigido

Così ho provato a impostare un limite più alto in /etc/security/limits.conf come questo:

user hard nofile 9999 

e un nuovo login come ssh localhost -l user mi ha dato il nuovo limite:

user@notebook:~$ ulimit -Hn 9999

Spero che questo funzioni anche per te.

    
risposta data TomTomTom 11.03.2015 - 00:43
fonte
4

Questo articolo , penso che indirizzi il tuo problema .

In pratica, dovresti usare il comando ulimit per aumentare le risorse disponibili.

Ad esempio:

Utilizzare il seguente comando per visualizzare il numero massimo di descrittori di file aperti:

cat /proc/sys/fs/file-max

Per visualizzare i valori hard e soft, emettere il comando come segue:

# ulimit -Hn
# ulimit -Sn

Per visualizzare i valori hard e soft per l'utente httpd o oracle, immettere il comando nel modo seguente:

# su - username

Per correggere il numero di file massimi, puoi aumentare il numero massimo di file aperti impostando un nuovo valore nella variabile kernel / proc / sys / fs / file-max come segue (accedi come root):

# sysctl -w fs.file-max=100000

Il comando sopra impone il limite a 100000 file. È necessario modificare il file /etc/sysctl.conf e inserire la riga seguente in modo che dopo il riavvio l'impostazione rimanga invariata. Per fare ciò, aggiungi una direttiva di configurazione come segue:

fs.file-max = 100000

Salva e chiudi il file. Gli utenti devono disconnettersi e riconnettersi per rendere effettive le modifiche o semplicemente digitare il seguente comando:

# sysctl -p

Verifica le tue impostazioni con il comando:

# cat /proc/sys/fs/file-max

o

# sysctl fs.file-max

La procedura sopra riportata imposta i limiti dei descrittori di file (FD) a livello di sistema, tuttavia puoi limitare httpd (o qualsiasi altro utente) utente a limiti specifici modificando /etc/security/limits.conf file modificando /etc/security/limits.conf e imposta i limiti come segue:

httpd soft nofile 4096
httpd hard nofile 10240

Quindi controllali per:

# su - httpd
$ ulimit -Hn
$ ulimit -Sn

Se hai il problema su altre distribuzioni Linux, controlla /etc/pam.d/login e assicurati di aver attivato pam_limits.so , ad es.

session required pam_limits.so
    
risposta data Brooke Fogg-Wolfe 09.03.2015 - 20:37
fonte
0

Se si tratta di un servizio, puoi provare a impostare il limite in /etc/systemd/system/{ServiceName}.service add LimitNOFILE=65536

    
risposta data Maicon Silva Pinto de Abreu Sa 07.07.2017 - 17:12
fonte

Leggi altre domande sui tag