GNU/Linux >> Tutoriels Linux >  >> Linux

Comment définir ulimit et la limite des descripteurs de fichiers sur les serveurs Linux

Présentation :  Des défis tels que le nombre de fichiers ouverts dans n'importe quel environnement de production sont devenus courants de nos jours. Étant donné que de nombreuses applications basées sur Java et Apache sont installées et configurées, ce qui peut entraîner un trop grand nombre de fichiers ouverts, de descripteurs de fichiers, etc. Si cela dépasse la limite par défaut définie, vous pouvez être confronté à des problèmes de contrôle d'accès et à l'ouverture de fichiers. défis. De nombreux environnements de production se retrouvent dans des situations de blocage à cause de cela.

Heureusement, nous avons "ulimit ” dans n'importe quel serveur basé sur Linux, par lequel on peut voir/définir/obtenir le nombre de fichiers ouverts sur l'état/les détails de configuration. Cette commande est équipée de nombreuses options et avec cette combinaison, on peut définir le nombre de fichiers ouverts. Voici les commandes étape par étape avec des exemples expliqués en détail.

Pour voir quelle est la limite actuelle de fichiers ouverts dans n'importe quel système Linux

Pour obtenir la limite de fichiers ouverts sur n'importe quel serveur Linux, exécutez la commande suivante,

[[email protected] ~]# cat /proc/sys/fs/file-max146013

Le nombre ci-dessus indique que l'utilisateur peut ouvrir le fichier "146013" par session de connexion utilisateur.

[[email protected] ~]# cat /proc/sys/fs/file-max149219[[email protected] ~]# cat /proc/sys/fs/file-max73906

Cela indique clairement que les systèmes d'exploitation Linux individuels ont un nombre différent de fichiers ouverts. Ceci est basé sur les dépendances et les applications qui s'exécutent dans les systèmes respectifs.

commande ulimit :

Comme son nom l'indique, ulimit (limite d'utilisateurs) est utilisé pour afficher et définir la limite des ressources pour l'utilisateur connecté. Lorsque nous exécutons la commande ulimit avec l'option -a, elle imprimera la limite de toutes les ressources pour l'utilisateur connecté. Exécutons maintenant "ulimit -a ” sur les systèmes Ubuntu / Debian et CentOS,

Ubuntu / Système Debian ,

[email protected] ~}$ ulimit -acore taille du fichier          (blocs, -c) 0taille du segment de données           (koctets, -d) priorité de planification illimitée             (-e) 0taille du fichier               (blocs, -f) nombre illimité de signaux en attente                                                                        5731Max Mémoire verrouillée (kytes, -l) 64max Taille de mémoire (kytes, -m) fichiers illimitetopen (-n) 1024 Taille de tuy ) 0taille de la pile             (koctets, -s) 8192temps CPU               (secondes, -t) processus utilisateur max illimités              (-u) 5731mémoire virtuelle          (koctets, -v) verrous de fichiers illimités                                         

Système CentOS

[email protected] ~}$ ulimit -acore taille du fichier          (blocs, -c) 0taille du segment de données           (koctets, -d) priorité de planification illimitée             (-e) 0taille du fichier               (blocs, -f) nombre illimité de signaux en attente                                                                        5 901 mémoire verrouillée       (koctets, -l) 64 taille de mémoire maximale         (koctets, -m) fichiers ouverts illimités                      (-n) 1 024 taille de canal            (512 octets, -p) 0taille de la pile             (koctets, -s) 8192 temps CPU               (secondes, -t) processus utilisateur max illimité                       (-u) 5901 mémoire virtuelle          (koctets, -v) verrous de fichiers illimités                                                                                  

Comme nous pouvons le voir ici, différents systèmes d'exploitation ont des limites différentes. Toutes ces limites peuvent être configurées/modifiées à l'aide de la commande "ulimit".

Pour afficher la limite de ressource individuelle puis passer le paramètre individuel dans la commande ulimit, certains paramètres sont listés ci-dessous :

  • ulimit -n  -> Il affichera la limite du nombre de fichiers ouverts
  • ulimit -c –> Il affiche la taille du fichier core
  • umilit -u –> Il affichera la limite maximale de processus utilisateur pour l'utilisateur connecté.
  • ulimit -f –> Il affichera la taille de fichier maximale que l'utilisateur peut avoir.
  • umilit -m –> Il affichera la taille maximale de la mémoire pour l'utilisateur connecté.
  • ulimit -v –> Il affichera la limite de taille maximale de la mémoire

Utilisez les commandes ci-dessous pour vérifier les limites matérielles et logicielles du nombre de fichiers ouverts pour l'utilisateur connecté

[email protected] ~}$ ulimit -Hn1048576[email protected] ~}$ ulimit -Sn1024

Comment résoudre le problème lorsque la limite du nombre maximum de fichiers a été atteinte ?

Supposons que notre serveur Linux ait atteint la limite du nombre maximum de fichiers ouverts et souhaite étendre cette limite à l'ensemble du système, par exemple, nous voulons définir 100 000 comme limite du nombre de fichiers ouverts.

Utilisez la commande sysctl pour transmettre le paramètre fs.file-max au noyau à la volée, exécutez la commande sous en tant qu'utilisateur root,

[email protected]~]# sysctl -w fs.file-max=100000fs.file-max =100000

Les modifications ci-dessus seront actives jusqu'au prochain redémarrage, donc pour rendre ces modifications persistantes tout au long du redémarrage, modifiez le fichier /etc/sysctl.conf et ajouter le même paramètre,

[email protected]~]# vi /etc/sysctl.conffs.file-max =100000

enregistrer et quitter le fichier,

Exécutez la commande ci-dessous pour appliquer immédiatement les modifications ci-dessus sans vous déconnecter ni redémarrer.

[email protected]~]# sysctl -p

Vérifiez maintenant si les nouvelles modifications sont en vigueur ou non.

[email protected]~]# cat /proc/sys/fs/file-max100000

Utilisez la commande ci-dessous pour savoir combien de descripteurs de fichiers sont actuellement utilisés :

[[email protected] ~]# plus /proc/sys/fs/file-nr1216 0 100000

Remarque :- Commande "sysctl -p ” est utilisé pour valider les modifications sans redémarrage ni déconnexion.

Définir la limite de ressources au niveau de l'utilisateur via le fichier limit.conf 

"/etc/sysctl.conf ” est utilisé pour définir la limite de ressources à l'échelle du système, mais si vous souhaitez définir une limite de ressources pour un utilisateur spécifique comme Oracle, MariaDB et Apache, cela peut être réalisé via "/etc/security/limits.conf ” fichier.

L'exemple de Limit.conf est illustré ci-dessous,

[email protected]~]# cat /proc/sys/fs/file-max

Supposons que nous voulons définir une limite stricte et souple sur le nombre de fichiers ouverts pour l'utilisateur linuxtechi et pour l'utilisateur oracle, définissez une limite stricte et souple sur le nombre de processus ouverts, modifiez le fichier "/etc/security/limits.conf" et ajoutez ce qui suit lignes

# limite stricte pour le nombre maximal de fichiers ouverts pour linuxtechi userlinuxtechi hard nofile 4096# limite souple pour le nombre maximal de fichiers ouverts pour linuxtechi userlinuxtechi soft nofile 1024# limite stricte pour le nombre maximal de processus pour oracle useroracle hard nproc 8096# limite souple pour le nombre maximal de processus pour oracle useroracle soft nproc 4096

Enregistrez et quittez le fichier.

Remarque : Si vous souhaitez limiter les ressources à un groupe au lieu d'utilisateurs, cela peut également être possible via le fichier limit.conf, à la place du nom d'utilisateur , tapez @ et le reste des éléments seront les mêmes, l'exemple est montré ci-dessous,

# limite stricte pour le nombre maximal de fichiers ouverts pour sysadmin group@sysadmin        hard         nofile            4096 # limite souple pour le nombre maximal de fichiers ouverts pour sysadmin group@sysadmin        soft         nofile            1024

Vérifiez si les nouvelles modifications sont en vigueur ou non,

~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096

Remarque :L'autre commande la plus utilisée est "lsof » qui est utilisé pour savoir « combien de fichiers sont ouverts actuellement ». Cette commande est très utile pour les administrateurs.

Conclusion :

Comme mentionné dans la section d'introduction, la commande "ulimit" est très puissante et aide à configurer et à s'assurer que les installations d'applications sont plus fluides sans aucun goulot d'étranglement. Cette commande aide à corriger de nombreuses limitations de fichiers sur les serveurs basés sur Linux.


Linux
  1. Comment définir une adresse IP statique et configurer le réseau sous Linux

  2. Comment rediriger la sortie vers un fichier et Stdout sous Linux

  3. Qu'est-ce que NFS et comment l'installer sous Linux

  4. Comment extraire les fichiers .gz et .tar.gz sous Linux

  5. Comment définir la limite de taille de téléchargement de fichier dans Apache ?

Comment installer et configurer le navigateur Tor sous Linux

Fichier hôte Linux :comment le modifier et l'utiliser ?

Comment changer la limite de fichiers ouverts sous Linux

Comment créer et utiliser un fichier d'échange sous Linux

Comment définir la date et l'heure sous Linux

Comment définir et supprimer des variables d'environnement sous Linux