Fix ulimit: Dateien öffnen: Limit kann nicht geändert werden: Operation nicht erlaubt

12

Ich habe dies auf verschiedenen GNU / Linux-Installationen getestet:

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

System A und D.

Das erste Limit, das ich erreicht habe, ist 1024. Es kann leicht erhöht werden, indem man es in /etc/security/limits.conf einfügt:

*                hard    nofile          1048576

und dann ausführen:

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

Jetzt geht der Test zu 1048576.

Es scheint jedoch, dass ich es nicht über 1048576 erhöhen kann. Wenn ich 1048577 in limit.conf setze, wird es einfach ignoriert.

Was verursacht das?

System B.

Auf dem System kann BI nicht einmal 1048576 erreichen:

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

/etc/security/limits.conf:

*                hard    nofile          1048576

Hier bekomme ich:

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

Woher kam diese Grenze?

System C.

Dieses System hat auch das Limit 1048576 in limit.conf und 99999999 in / proc / sys / fs / file-max.

Aber hier ist die Grenze 4096:

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

Wie erhöhe ich das auf (mindestens) 1048576?

(Hinweis zur Selbsthilfe : Tun Sie das nicht: echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max)

Ole Tange
quelle
Ich habe genau das gleiche Problem, das Limit scheint 1048576 zu sein. Wenn ich darüber nachdenke, erhalte ich die folgende Fehlermeldung: bash: ulimit: Dateien öffnen: Limit kann nicht geändert werden: Operation nicht erlaubt
Abbadon

Antworten:

5

Überprüfen Sie, ob Folgendes /etc/ssh/sshd_configenthalten ist:

UsePAM=yes

und das /etc/pam.d/sshdenthält:

session    required   pam_limits.so

Immer noch keine Antwort darauf, warum 1048576 max.

Der 1048576 scheint pro Prozess zu sein. Durch mehrere Prozesse kann diese Grenze überwunden werden.

Ole Tange
quelle
3
Wenn dies wirklich die Lösung für Ihr eigenes Problem wäre, wäre es meiner Meinung nach gut, eine stärkere Verbindung zwischen dem Problem und der oben genannten Lösung herzustellen.
Jeff Schaller
1
Re: 1048576 (= 2 ^ 10 * 2 ^ 10 = 1024 ^ 2 als Referenz). Es kann einige relevante Informationen in dieser Antwort hier geben: stackoverflow.com/a/1213069/2320823
saladi
Was hat ssh damit zu tun?
Linas