Ulimit di riparazione: file aperti: impossibile modificare il limite: operazione non consentita


13

Ho provato questo su diverse installazioni GNU / Linux:

perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'

Sistema A e D

Il primo limite che raggiungo è 1024. Viene facilmente aumentato inserendo questo in /etc/security/limits.conf:

*                hard    nofile          1048576

e quindi eseguire:

ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max

Ora il test passa a 1048576.

Tuttavia, sembra che non riesca a elevarlo al di sopra di 1048576. Se inserisco 1048577 in limits.conf, viene semplicemente ignorato.

Cosa sta causando questo?

Sistema B

Nel sistema BI non è nemmeno possibile arrivare a 1048576:

echo 99999999 | sudo tee /proc/sys/fs/file-max

/etc/security/limits.conf:

*                hard    nofile          1048576

Qui ottengo:

$ ulimit -n 65537
bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 65536
#OK

Da dove viene quel limite?

Sistema C

Questo sistema ha anche il limite 1048576 in limits.conf e 99999999 in / proc / sys / fs / file-max.

Ma qui il limite è 4096:

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

Come posso elevarlo a (almeno) 1048576?

(Nota per sé: non fare echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max:)


1
Ho esattamente lo stesso problema, il limite sembra essere 1048576. Se ripasso ottengo il seguente errore: bash: ulimit: file aperti: impossibile modificare il limite: Operazione non consentita
Abbadon,

Ciao, sto avendo un problema molto simile. Penso che sarebbe molto utile fornire maggiori dettagli su cosa sono questi diversi sistemi.
Time4Tea

Risposte:


4

Verifica che /etc/ssh/sshd_configcontenga:

UsePAM=yes

e che /etc/pam.d/sshdcontiene:

session    required   pam_limits.so

Ancora nessuna risposta al motivo per cui 1048576 è max.

Il 1048576 sembra essere per processo. Quindi, avendo più processi, questo limite può essere superato.


4
Se questa fosse davvero la soluzione al tuo problema, penso che sarebbe meglio disegnare una connessione tra il problema e la soluzione sopra.
Jeff Schaller

2
Ri: 1048576 (= 2 ^ 10 * 2 ^ 10 = 1024 ^ 2, per riferimento). Ci può essere qualche informazioni rilevanti in questa risposta qui: stackoverflow.com/a/1213069/2320823
Saladi

1
Cosa c'entra ssh con questo?
Linas,

Sono d'accordo con @Linas. Siamo spiacenti, penso che il legame tra la risposta e la domanda non sia chiaro.
Time4Tea
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.