Aller à la recherche

Limiter l'usage des ressources grâce à limits.conf et un peu à ulimit

La limitation des ressources permet de mettre en place un système fiable qui ne craindra pas un déni de service en cas de dysfonctionnement d'un processus. La limitation des ressources allouées aux utilisateur se fait grâce à pam_limits chargé par pam à l'ouverture de session et se configure avec les fichiers /etc/security/limits.conf et limits.d

Limiter les ressources système grâce à limits.conf

Les fichiers se composent sous forme de 4 colonnes

Domain  |  Type  |  Item  |  Value
  • Domaine est l'entité pour lesquels la limite s'applique, cela peut être
    • un utilisateur
    • un group d'utilisateur (@Nomdugroup)
    • (*) pour désigner l'ensemble des utilisateurs
  • Type peut prendre 2 valeurs
    • soft qui impose des limites, qui peuvent être dépassées temporairement
    • hard qui fixe des limites qui ne peuvent être dépassées.
  • Item : Quel item est affecté
    • core : taille des fichiers "coredump"
    • data : taille maximum des données des programmes
    • fsize : limite la taille des fichiers crées par l'utilisateur
    • nofile : limite le nombre de fichier ouvert
    • rss : limite la taille maximal des résidents set (portion de la mémoire processus stockée en mémoire) en ko
    • cpu : limite le temps CPU maximal d'un processus en minute
    • nproc : limite le nombre de processus concurrent
    • maxlogins : limite le nombre de login simultané
    • priority : limite le niveau de priorité des processus à exécuter

Quelques exemple exemple : imposer des limites de façon hard (définitive) au groupe "dbmaintenace" l'utilisation pour un seul processus à 2 min de CPU @dbmaintenance hard cpu 2

exemple : l'utilisateur ftp ne peut avoir de processus concurrent @ftp - nproc 0

Commande ulimit (à ne pas confondre avec ulimits.conf)

ulimit est une commande interne à bash et est limitée à la session courante, et permet de se prémunir des erreurs "accidentelle". Pour comprendre facilement le fonctionnement de la commande ulimit, vous pouvez créer un répertoire de test, y ouvrir un terminal et taper les commandes suivantes : #Création d'un fichier de 2Mo sans problème avec la commande dd dd if=/dev/urandom of=fichier_2Mo bs=1M count=2 2+0 enregistrements lus 2+0 enregistrements écrits 2097152 bytes (2,1 MB, 2,0 MiB) copied, 0,0302303 s, 69,4 MB/s # limitons la taille des fichiers que nous pouvons créer depuis cette session à 2Mo ulimit -f 2000 #re executons notre code dd if=/dev/urandom of=2M bs=1M count=2 Débordement de la taille permise pour un fichier (core dumped) #Cette fois-ci nous avons une erreur Mais si nous fermons ce terminal puis en ouvrons un nouveau la limite n'a plus aucun effet qu'elle soit défini en Soft ou Hard

Afficher les limites en cours ulimit -a

Limiter la taille des "core file" ulimit -c xxxx

Limiter la taille des fichiers crées par le shell ulimit -f xxxx

Limiter le nombre de processus qu'un utilisateur peut démarrer ulimit -u

Il est possible de limiter en hard -H ou en soft -S

Voilà, une première introduction aux limites grâce aux fichiers ulimits.conf et la commande ulimit de bash.

La discussion continue ailleurs

URL de rétrolien : https://www.binsp.net/?trackback/20

Fil des commentaires de ce billet

Page top