Nous avons une boîte CentOS que j'essaie d'augmenter le nombre maximum de fichiers qu'un utilisateur peut ouvrir. Actuellement, quand je cours, ulimit -Sn
je reçois 1024
et ulimit -Hn
donne 4096
. J'ai besoin de ce nombre vers 6000.
Dans /etc/sysctl.conf
j'ai mis fs.file-max = 100000
. Dans /etc/security/limits.conf
j'ai l'ensemble suivant:
username soft nofile 6000
username hard nofile 65535
Je me suis déconnecté et reconnecté en tant que, username
mais je ne vois toujours pas mes modifications. De quoi ai-je besoin pour changer cette valeur?
Tout ce que j'ai, /etc/security/limits.d
c'est 90-nproc.conf
. J'ai également veillé à ce que ulimit ne soit pas appelé dans mon .bash_profile ou .bashrc.
Lorsque je l'exécute, sysctl -p
il crache les paramètres que je veux et montre la valeur fs.file-max
que je veux. Mais quand je cours ulimit -Sn
, j'obtiens 1048. Si j'essaye de courir, sysctl --system
je reçois error: Unknown parameter "--system"
.
Réponses:
Pour forcer
/etc/sysctl.conf
la relecture, exécutezsysctl -p
.Le fichier
/etc/security/limits.conf
est lu par des shells de connexion et vous devez fermer les fenêtres de sessions actives si dans l'interface graphique. Pour les connexions à distance, il prend effet lors de la reconnexion.la source
fs.file-max
est le nombre maximum de fichiers ouverts sur le système. C'est une limite stricte et elle ne sera pas reflétée par lesulimit
appels dans votre cas.Comme l'a dit une autre affiche, vous devez avoir sysctl défini la valeur dans le noyau en cours d'exécution. Il existe plusieurs façons de définir la valeur sans redémarrer:
À mon humble avis, la dernière méthode est la meilleure, car elle reproduit l'ordre dans lequel les paramètres seraient appliqués lors du démarrage (et donc si vous avez un conflit, cela deviendra apparent).
Remarque: je ne sais pas quelle version de CentOS vous utilisez, mais sur 7 au moins, j'ai rencontré un problème où si dracut reconstruit les initramfs pour une raison quelconque (comme lors de l'installation d'un nouveau module de noyau), il copiera le contenu de /etc/sysctl.* dans les initramfs, qui sera ensuite exécuté par systemd-sysctl pendant cette phase, même si vous supprimez plus tard ces entrées de /etc/sysctl.conf.
Dans mon environnement, j'ai édité le module systemd dracut pour exclure /etc/sysctl.* de cet environnement (car ces paramètres seront définis une fois que rootfs sera monté et que systemd-sysctl s'exécutera à nouveau). C'est juste un piège que vous pourriez rencontrer.
la source