Arreglando ulimit: abrir archivos: no se puede modificar el límite: Operación no permitida

13

Probé esto en diferentes instalaciones de GNU / Linux:

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

Sistema A y D

El primer límite que alcanzo es 1024. Se eleva fácilmente al poner esto en /etc/security/limits.conf:

*                hard    nofile          1048576

y luego ejecuta:

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

Ahora la prueba va a 1048576.

Sin embargo, parece que no puedo elevarlo por encima de 1048576. Si pongo 1048577 en limit.conf, simplemente se ignora.

¿Qué está causando eso?

Sistema B

En el sistema, BI ni siquiera puede llegar a 1048576:

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

/etc/security/limits.conf:

*                hard    nofile          1048576

Aquí llego:

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

¿De dónde vino ese límite?

Sistema C

Este sistema también tiene el límite 1048576 en limits.conf y 99999999 en / proc / sys / fs / file-max.

Pero aquí el límite es 4096:

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

¿Cómo elevo eso a (al menos) 1048576?

(Nota a la libre: no hago: echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max)

Ole Tange
fuente
1
Tengo exactamente el mismo problema, el límite parece ser 1048576. Si me paso, aparece el siguiente error: bash: ulimit: abrir archivos: no se puede modificar el límite: Operación no permitida
Abbadon
Hola, estoy teniendo un problema muy similar. Creo que sería muy útil proporcionar más detalles sobre estos diferentes sistemas.
Time4Tea

Respuestas:

4

Compruebe que /etc/ssh/sshd_configcontiene:

UsePAM=yes

y que /etc/pam.d/sshdcontiene:

session    required   pam_limits.so

Todavía no hay respuesta a por qué 1048576 es máx.

El 1048576 parece ser por proceso. Entonces, al tener múltiples procesos, este límite puede ser superado.

Ole Tange
fuente
44
Si esta fuera realmente la solución a su propio problema, creo que sería bueno establecer una mayor conexión entre el problema y la solución anterior.
Jeff Schaller
2
Re: 1048576 (= 2 ^ 10 * 2 ^ 10 = 1024 ^ 2, para referencia). Puede haber información relevante en esta respuesta aquí: stackoverflow.com/a/1213069/2320823
saladi
1
¿Qué tiene que ver ssh con eso?
Linas
Estoy de acuerdo con @Linas. Lo siento, creo que el vínculo entre la respuesta y la pregunta no está claro.
Time4Tea