Comment définir définitivement la valeur ulimit?

19

Sur Debian Wheezy, ulimit -adonne:

open files                      (-n) 1024

J'ajoute ceci à /etc/security/limits.conf

*                hard    nofile          64000

puis redémarrez.

Et ulimit -adonne toujours un nombre maximum de fichiers ouverts de 1024. N'importe qui pourrait jeter un peu de lumière dessus?

Icu
la source
est-ce peut-être un hôte virtuel?
Dennis Nolte
non, c'est un serveur mongodb
Icu

Réponses:

15

Première option: vous n'avez pas non plus réglé la limite logicielle plus haut.

Solution possible:

dans /etc/security/limits.conf, ajoutez

* soft nofile 2048

tester avec

ulimit -n 2048 

Deuxième option: vous êtes connecté en tant qu'utilisateur et dans un fichier "config" (profil, bashrc, quelque chose comme ça), la limite logicielle est définie sur une valeur inférieure.

Solution possible fe grep pour ulimit dans votre dossier etc et / ou dossier home.

Avertissement: En fonction de la quantité de fichiers / répertoires que vous avez là-dedans, vous voudrez peut-être considérer uniquement des répertoires / fichiers spécifiques

ps: il y a beaucoup de questions similaires ici que vous voudrez peut-être lire.

Particulièrement dur vs soft limit

Lisez ici pour une autre solution possible qui va plus en détail Trop de fichiers ouverts

Dennis Nolte
la source
En fait, j'essayais de ne fixer que la limite stricte à 64000. La limite souple était donc toujours sur 1024. Maintenant, j'ai essayé de définir une limite souple à 64000 + dur = 72000. Mais cela n'a pas fonctionné. J'ai aussi essayé "* - nofile 64000" et j'obtiens le même résultat.
Icu
Après avoir lu "Trop de fichiers ouverts", je pensais qu'un paramètre du noyau remplacerait les paramètres limits.conf mais: "fs.file-max = 4933738"
Icu
@Icu essaie également les réponses de celui-ci: serverfault.com/questions/93234/… pourrait être lié à votre shell
Dennis Nolte
J'ai ajouté 'session required pam_limits.so' à /etc/pam.d/other et common-session mais cela n'aide pas ... Comme alternative, j'ai ajouté un 'ulimit -n' à mon script d'init et ça marche mais je me demande pourquoi je ne peux pas obtenir les valeurs correctes dans ma coquille.
Icu
20

Il y a un bogue dans Debian. Pour augmenter, ulimitvous devez l'ajouter au /etc/pam.d/common-sessionfichier:

session required pam_limits.so

et en /etc/security/limits.confplus:

*               soft    nofile          65535
*               hard    nofile          65535

Redémarrez ensuite le système.

jpyzio
la source
1
pas besoin que je modifie le /etc/pam.d/common-sessionfichier. cela a fonctionné simplement en ajoutant les deux autres lignes au limits.conffichier :-)
Francesco Casula
Vous ne devriez pas avoir besoin de redémarrer.
David Goodwin
C'est brutal. Sur debian 7 maintenant, et cela ne fonctionne pas. Je ne sais pas quoi faire :( - Je pourrais ouvrir une nouvelle question
NiCk Newman
12
Boom. *le caractère générique ne fonctionne pas root. J'ai ajouté rootau lieu de *, et cela fonctionne. Je vous remercie!
NiCk Newman
@FrancescoCasula - quelle version de Debian était-ce? J'essaie juste de savoir si c'est vraiment un bug, et s'il existe toujours ...
UpTheCreek
0

Dans mon cas d'Apache sur Debian 10, ce qui précède n'a pas aidé mais cela a fonctionné:

echo "APACHE_ULIMIT_MAX_FILES='ulimit -n 16384'" >> /etc/apache2/envvars
service apache2 restart

J'ai vérifié auprès de:

cat /proc/$pid/limits

..où $pidest l'ID de processus de l'un des processus Apache.

Neil Stockbridge
la source