Perché non riesce a superare i 4096 file aperti massimi per utenti non root?


13

Non riesco ad aumentare il nofilelimite 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, effettuato l'accesso e:

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

C'è ancora in qualche modo sembra essere un limite di 4096 max per gli utenti non-root.


Sto riscontrando lo stesso identico problema sul desktop Ubuntu 16.10. Non importa cosa provo, i limiti sono 1024 o 4096.
NathanAldenSr

Risposte:


13

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 descrive il manuale di ulimit:

solo root può aumentare il limite massimo

Quindi ho cercato di impostare un limite superiore in /etc/security/limits.confquesto modo:

user hard nofile 9999 

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

user@notebook:~$ ulimit -Hn 9999

Spero che questo funzioni anche per te.


Grazie TomTomTom. Ho già un tale cambiamento in /etc/security/limits.d/custom.conf. Ho provato a metterlo direttamente in /etc/security/limits.conf come mi hai suggerito, e ottengo ancora "bash: ulimit: file aperti: impossibile modificare il limite: operazione non consentita".
Caffeina Coma,

Io - suppongo - uno dei due motivi, perché non funziona per te:
TomTomTom

1
Mi ci è voluto troppo tempo per modificare il commento incompleto. Qui andiamo: io - suppongo - uno dei due motivi, perché questo non funziona per te: 1. /etc/security/limits*non viene letto dal tuo meccanismo di accesso - per motivi ancora sconosciuti. 2. Il limite rigido viene impostato su 4096 altrove e "solo il root può aumentare ...". Potresti controllare i tuoi profili come .bashrc(a seconda della tua shell), oppure potresti cercare /etcaltri posti, dove potrebbero essere impostati dei limiti, come find /etc | grep -e ulimit -e 4096 -e nofile. A proposito: hai provato ssh? E: sei cambiato /etc/ssh/sshd.confper evitare PAM per qualche motivo?
TomTomTom

Sì, tutto il login avviene tramite ssh. Ho disabilitato UsePAM: diverse guide lo consigliano come parte del consentire solo accessi basati su ssh-key. Proverò ad accenderlo temporaneamente, solo per vedere se questo è il problema. Grazie!
Caffeina Coma,

Dopotutto, PAM è ciò che dovrebbe leggere /etc/security/limits*: potresti provare ad abilitare PAM solo per verificarlo. Proverò a disabilitare PAM per vedere quale differenza fa e riporterà i risultati. --- Sì! questo è tutto! Con PAM disabilitato anche il mio limite è 4096, anche se impostato su 9999 pollici /etc/security/limits.conf.
TomTomTom

4

Questo articolo , penso risolva il tuo problema.

Fondamentalmente dovresti usare il comando ulimit per aumentare le risorse disponibili.

Per esempio:

Utilizzare il comando seguente 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, emettere il comando come segue:

# su - username

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

# sysctl -w fs.file-max=100000

Il comando sopra impone il limite a 100000 file. È necessario modificare il /etc/sysctl.conffile e inserire la seguente riga in modo che dopo il riavvio l'impostazione rimanga così com'è. 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 digitare semplicemente il comando seguente:

# sysctl -p

Verifica le tue impostazioni con il comando:

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

o:

# sysctl fs.file-max

La procedura sopra descritta imposta limiti di descrittori di file (FD) a livello di sistema, tuttavia è possibile limitare l'utente httpd(o qualsiasi altro utente) a limiti specifici modificando il /etc/security/limits.conffile modificando /etc/security/limits.confe impostando i limiti come segue:

httpd soft nofile 4096
httpd hard nofile 10240

Quindi controllali con:

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

Se hai il problema su altre distribuzioni Linux, controlla /etc/pam.d/logine assicurati di aver pam_limits.soabilitato, ad es

session required pam_limits.so

2
Ciao Brooke. Purtroppo, ho già provato i suggerimenti di quell'articolo. Sebbene "ulimit -Hn" fosse nuovo per me; stampa 4096, il limite in cui continuo a imbattermi.
Caffeina Coma

0

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


Ubuntu 14.04 non utilizza systemd per impostazione predefinita.
5

Ubuntu 16.04, Tomcat 8 ha funzionato per me
Arjang
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.