web-dev-qa-db-fra.com

Augmenter ulimit sur CentOS

Nous avons une boîte CentOS que j'essaie d'augmenter le nombre maximum de fichiers qu'un utilisateur peut avoir ouvert. Actuellement, lorsque je lance 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 dans /etc/security/limits.d est 90-nproc.conf. J'ai également veillé à ce que ulimit ne soit pas appelé dans mon .bash_profile ou .bashrc.

Quand je lance sysctl -p il crache les paramètres que je veux et il montre la valeur de fs.file-max ce que je veux. Mais quand je lance ulimit -Sn, J'obtiens 1048. Si j'essaye d'exécuter sysctl --system Je reçois error: Unknown parameter "--system".

19
tubaguy50035

Forcer /etc/sysctl.conf à relire, exécutez sysctl -p.

Fichier /etc/security/limits.conf est lu par les 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.

14
Xavier Lucas

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:

sysctl -p /etc/sysctl.conf
sysctl -w fs.file-max=100000
sysctl --system

À mon humble avis, la dernière méthode est la meilleure, car elle reproduit l'ordre dans lequel les paramètres seraient appliqués au 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.

6
Boscoe