Naprawianie ulimit: otwarte pliki: nie można zmienić limitu: Operacja niedozwolona

13

Przetestowałem to na różnych instalacjach GNU / Linux:

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

System A i D.

Pierwszy limit, który osiągnąłem to 1024. Można go łatwo podnieść, umieszczając to w /etc/security/limits.conf:

*                hard    nofile          1048576

a następnie uruchom:

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

Teraz test przechodzi do 1048576.

Wydaje się jednak, że nie mogę go podnieść powyżej 1048576. Jeśli ustawię 1048577 w limit.conf, zostanie to po prostu zignorowane.

Co to powoduje?

System B

W systemie BI nie można nawet dostać się do 1048576:

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

/etc/security/limits.conf:

*                hard    nofile          1048576

Tutaj otrzymuję:

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

Skąd ten limit?

System C.

Ten system ma również limit 1048576 w limit.conf i 99999999 w / proc / sys / fs / file-max.

Ale tutaj limit wynosi 4096:

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

Jak podnieść to do (przynajmniej) 1048576?

(Uwaga do siebie: Nie rób echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max:)

Ole Tange
źródło
1
Mam dokładnie ten sam problem, limit wydaje się wynosić 1048576. Jeśli przejdę dalej, pojawia się następujący błąd: bash: ulimit: otwórz pliki: nie można modyfikować limitu: Operacja niedozwolona
Abbadon
Cześć, mam bardzo podobny problem. Myślę, że bardzo pomocne byłoby podanie szczegółowych informacji na temat tych różnych systemów.
Time4Tea

Odpowiedzi:

4

Sprawdź, czy /etc/ssh/sshd_configzawiera:

UsePAM=yes

i który /etc/pam.d/sshdzawiera:

session    required   pam_limits.so

Nadal nie ma odpowiedzi na pytanie, dlaczego 1048576 ma maks.

1048576 wydaje się być na proces. Dzięki wielu procesom limit ten można pokonać.

Ole Tange
źródło
4
Jeśli tak naprawdę było to rozwiązanie twojego problemu, myślę, że dobrze byłoby narysować więcej związku między problemem a powyższym rozwiązaniem.
Jeff Schaller
2
Re: 1048576 (= 2 ^ 10 * 2 ^ 10 = 1024 ^ 2, w celach informacyjnych). Odpowiedź może zawierać kilka istotnych informacji: stackoverflow.com/a/1213069/2320823
saladi
1
Co ma z tym wspólnego ssh?
Linas
Zgadzam się z @Linas. Niestety, myślę, że związek między odpowiedzią a pytaniem jest niejasny.
Time4Tea