Correction ulimit: fichiers ouverts: impossible de modifier la limite: opération non autorisée

13

J'ai testé cela sur différentes installations GNU / Linux:

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

Système A et D

La première limite que j'ai atteinte est 1024. Elle est facilement augmentée en la mettant dans /etc/security/limits.conf:

*                hard    nofile          1048576

puis exécutez:

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

Maintenant, le test passe à 1048576.

Cependant, il semble que je ne puisse pas l'augmenter au-dessus de 1048576. Si je mets 1048577 dans limits.conf, il est simplement ignoré.

Qu'est-ce qui cause ça?

Système B

Sur le système BI, vous ne pouvez même pas accéder à 1048576:

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

/etc/security/limits.conf:

*                hard    nofile          1048576

Ici, je reçois:

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

D'où vient cette limite?

Système C

Ce système a également la limite 1048576 dans limits.conf et 99999999 dans / proc / sys / fs / file-max.

Mais ici, la limite est de 4096:

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

Comment puis-je augmenter cela à (au moins) 1048576?

(Note à moi: Ne pas faire: echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max)

Ole Tange
la source
1
J'ai exactement le même problème, la limite semble être 1048576. Si je passe en revue, j'obtiens l'erreur suivante: bash: ulimit: fichiers ouverts: impossible de modifier la limite: opération non autorisée
Abbadon
Salut, j'ai un problème très similaire. Je pense qu'il serait très utile de fournir plus de détails sur ce que sont ces différents systèmes.
Time4Tea

Réponses:

4

Cochez qui /etc/ssh/sshd_configcontient:

UsePAM=yes

et qui /etc/pam.d/sshdcontient:

session    required   pam_limits.so

Toujours pas de réponse à la raison pour laquelle 1048576 est max.

Le 1048576 semble être par processus. Donc, en ayant plusieurs processus, cette limite peut être dépassée.

Ole Tange
la source
4
Si c'était vraiment la solution à votre propre problème, je pense qu'il serait bon de faire plus de lien entre le problème et la solution ci-dessus.
Jeff Schaller
2
Re: 1048576 (= 2 ^ 10 * 2 ^ 10 = 1024 ^ 2, pour référence). Il peut y avoir des informations pertinentes dans cette réponse ici: stackoverflow.com/a/1213069/2320823
saladi
1
Qu'est-ce que ssh a à voir avec ça?
Linas
Je suis d'accord avec @Linas. Désolé, je pense que le lien entre la réponse et la question n'est pas clair.
Time4Tea