Comment puis-je augmenter la limite de fichiers ouverts pour tous les processus?


32

Je peux utiliser ulimit mais je pense que cela n'affecte que ma session shell. Je veux que la limite soit augmentée pour tous les processus. C'est sur Red Hat.


Quelle version de Red Hat, au fait? RHEL5?
mattdm

Réponses:


26

La réponse de Justin vous indique comment augmenter le nombre de fichiers ouverts disponibles au total pour l'ensemble du système. Mais je pense que vous demandez comment augmenter la limite par utilisateur, à l'échelle mondiale. La réponse à cela est d'ajouter les lignes suivantes à /etc/security/limits.conf:

*               soft    nofile            2048
*               hard    nofile            2048

(Où le * signifie tous les utilisateurs.)

Il y a une documentation récapitulative dans ce fichier lui-même et dans man limits.conf. Ceci est implémenté via le pam_limits.somodule qui est appelé pour différents services configurés dans /etc/pam.d/.

Et, je dois l'admettre, je ne sais pas d' où vient ce 1024 par défaut. Et croyez-moi, j'ai regardé. J'ai même essayé sans le module pam_limits configuré, et il est toujours là. Il doit être codé en dur quelque part, mais je ne sais pas exactement où.


2
Hmm ... J'ai réglé cela correctement. Quittez SSH et revenez et ma limite logicielle est toujours fixée à 1024. Y a-t-il quelque chose qui me manque pour rendre ce "actif"? Merci.
Joshua Pinter

@mattdm - Il convient de mentionner que sur certaines distributions Linux, le fichier mentionné sera sous: /etc/limits.conf
Guy Avraham

13

Selon l'article Linux Augmenter le nombre maximal de fichiers ouverts / descripteurs de fichiers (FD) , vous pouvez augmenter la limite des fichiers ouverts en ajoutant une entrée à /etc/sysctl.conf.

Ajoutez une directive de configuration comme suit:

fs.file-max = 100000

Enregistrez puis fermez le fichier. Les utilisateurs doivent se déconnecter et se reconnecter pour que les modifications prennent effet ou ils peuvent simplement taper la commande suivante:

# sysctl -p

Vous pouvez également vérifier vos paramètres avec la commande:

# cat /proc/sys/fs/file-max

Je suis sceptique quant à la nécessité de se déconnecter et de se reconnecter pour ce paramètre particulier, qui est à l'échelle du système. (Cela vaut pour à peu près tout dans sysctl ...)
mattdm

13

Augmenter le nombre maximal de fichiers ouverts ulimit sous Linux

Étape 1: ouvrez le sysctl.conf et ajoutez cette ligne fs.file-max = 65536

$ vi /etc/sysctl.conf

ajouter une nouvelle ligne et

fs.file-max = 65536

sauvegarder et quitter.

Étape 2:

$ vi /etc/security/limits.conf

et ajouter ci-dessous le mentionné

* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535

enregistrer et quitter le fichier max check ouvert ulimit

# ulimit -a

....
open files                      (-n) 65535

6

Mais si vous essayez d'augmenter le nombre maximum de fichiers ouverts d'un service comme MariaDB ou autre chose (en utilisant systemd ), vous devez le faire directement dans le fichier .service

/lib/systemd/system/<servicename>.service

Sera quelque chose comme ça:

[Unit]
Description=Some Daemon
After=syslog.target network.target

[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon

[Install]
WantedBy=multi-user.target

La réponse complète est ici: Augmentation de nproc pour les processus lancés par systemd sur CentOS 7


Cela doit être revoté, car l'omniprésence systemdet les changements en cours augmentent dans l'écosystème Linux. Cependant, je suggère de modifier la réponse cp -r /lib/systemd/system/mariadb.service /etc/systemd/system/et d'apporter les modifications à ce fichier, plutôt que le fichier de service à l'échelle du système fourni par le package.
ILMostro_7

3

SUPPLÉMENT:

Vous pouvez trouver config à différents endroits: /etc/security/limits.d/*.conf

J'ai dû le modifier. Cela n'a pas fonctionné sans cela. Le format est le même que pourlimits.conf


J'ai également dû mettre à jour ce fichier pour que le paramètre prenne pleinement en charge nos serveurs CentOS.
John Eisbrener
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.