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

Introduction: Des défis tels que le nombre de fichiers ouverts dans n’importe quel environnement de production sont devenus courants chaque jour. Étant donné que de nombreuses applications basées sur Java et Apache sont installées et configurées, ce qui peut entraîner trop de fichiers ouverts, de descripteurs de fichiers, etc. Si cela dépasse la limite par défaut définie, on peut rencontrer des problèmes de contrôle d’accès et des problèmes d’ouverture de fichiers. De nombreux environnements de production sont à l’arrêt à cause de cela.

ulimit-number-openfiles-linux-server

Heureusement, nous avons la commande « ulimit” dans n’importe quel serveur basé sur Linux, par laquelle on peut voir /définir / obtenir le nombre de fichiers ouverts état / 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 des commandes étape par étape avec des exemples expliqués en détail.

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

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

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

Le nombre ci-dessus montre que l’utilisateur peut ouvrir le fichier ‘146013’ par session de connexion utilisateur.

# cat /proc/sys/fs/file-max149219# 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’utilisateur) est utilisé pour afficher et définir la limite de ressources pour l’utilisateur connecté.Lorsque nous exécutons la commande ulimit avec l’option -a, elle affichera la limite de toutes les ressources pour l’utilisateur connecté. Maintenant, exécutons « ulimit-a » sur les systèmes Ubuntu / Debian et CentOS,

Système Ubuntu / Debian,

shashi@Ubuntu ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5731max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024 pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5731virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited

Système CentOS

shashi@centos ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5901max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5901virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited

Comme on peut le voir ici, différents systèmes d’exploitation ont des limites différentes définies. 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 le nombre de fichiers ouverts limite
  • ulimit–c- > Il affichera la taille du fichier principal
  • 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 de mémoire maximale pour l’utilisateur connecté.
  • ulimit-v->Il affichera la limite de taille de mémoire maximale

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

shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024

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

Supposons que notre serveur Linux a atteint la limite du nombre maximum de fichiers ouverts et que nous voulons étendre cette limite au système, par exemple, nous voulons définir 100000 comme limite du nombre de fichiers ouverts.

Utilisez la commande sysctl pour passer fs.paramètre file-max au noyau à la volée, exécuter sous la commande en tant qu’utilisateur root,

root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000

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

root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000

enregistrez et quittez le fichier,

Exécutez la commande beneath pour appliquer immédiatement les modifications ci-dessus sans déconnexion et redémarrez.

root@ubuntu~]# sysctl -p

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

root@ubuntu~]# cat /proc/sys/fs/file-max100000

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

# more /proc/sys/fs/file-nr1216 0 100000

Remarque: – La commande « sysctl-p” est utilisée pour valider les modifications sans redémarrage ni déconnexion.

Définissez la limite de ressources au niveau de l’utilisateur via limit.fichier de configuration

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

Limite d’échantillon.conf est montré ci-dessous,

root@ubuntu~]# cat /proc/sys/fs/file-max

Limits-conf-linux-part1

Limits-conf-linux-part2

Supposons que nous voulons définir une limite dure et souple sur le nombre de ouvrir des fichiers pour l’utilisateur linuxtechi et pour l’utilisateur oracle définissez une limite matérielle et logicielle sur le nombre de processus ouverts, modifiez le fichier « /etc/security/limits.conf » et ajoutez les lignes suivantes

# hard limit for max opened files for linuxtechi userlinuxtechi hard nofile 4096# soft limit for max opened files for linuxtechi userlinuxtechi soft nofile 1024# hard limit for max number of process for oracle useroracle hard nproc 8096# soft limit for max number of process for oracle useroracle soft nproc 4096

Enregistrez &quittez le fichier.

Note: Si vous souhaitez mettre une limite de ressources sur un groupe au lieu d’utilisateurs, cela peut également être possible via limit.fichier conf, à la place du nom d’utilisateur, tapez @<Nom_grOupe > et le reste des éléments sera le même, l’exemple est illustré ci-dessous,

# hard limit for max opened files for sysadmin group@sysadmin hard nofile 4096 # soft limit for max opened files for sysadmin group@sysadmin soft nofile 1024

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

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

Remarque: Une autre commande principalement utilisée est « lsof” qui est utilisée 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 des applications sont plus fluides sans aucun goulot d’étranglement. Cette commande aide à corriger de nombreuses limitations de fichiers dans les serveurs basés sur Linux.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.