Je remarque que sur une nouvelle image CentOS que je viens de démarrer à partir de EC2, la valeur par défaut ulimit est de 1024 fichiers ouverts, mais que / proc / sys / fs / file-max est défini sur 761 408 et je me demande comment ces deux limites fonctionnent. ensemble. Je suppose que ulimit -n est une limite par utilisateur du nombre de descripteurs de fichier alors que / proc / sys / fs / file-max concerne l'ensemble du système? Si tel est le cas, disons que je me suis connecté deux fois sous le même utilisateur - chaque utilisateur connecté a-t-il une limite de 1024 pour le nombre de fichiers ouverts, ou s'agit-il d'une limite de 1024 fichiers ouverts combinés entre chacun de ces utilisateurs connectés? chez les utilisateurs?
Et y at-il un impact considérable sur les performances de la définition d’un nombre très élevé de descripteurs de fichiers max, si votre système n’ouvre jamais beaucoup de fichiers?
Réponses:
file-max
est le maximum de descripteurs de fichier (FD) appliqués au niveau du noyau, qui ne peut pas être dépassé par tous les processus sans augmentation. Leulimit
est appliqué au niveau du processus, ce qui peut être inférieur aufile-max
.Il n'y a pas de risque d'impact sur les performances en augmentant
file-max
. Les distributions modernes ont le FD maximum défini assez haut, alors que dans le passé, il fallait recompiler et modifier le noyau pour dépasser 1024. Je n'augmenterais pas à l'échelle du système, sauf si vous avez un besoin technique.La configuration par processus doit souvent être réglée pour servir un démon particulier, qu’il s’agisse d’une base de données ou d’un serveur Web. Si vous supprimez entièrement la limite, ce démon pourrait potentiellement épuiser toutes les ressources système disponibles. ce qui signifie que vous seriez incapable de résoudre le problème sauf en appuyant sur le bouton de réinitialisation ou en redémarrant. Bien sûr, l’un ou l’autre de ceux-ci est susceptible de corrompre les fichiers ouverts.
la source
ulimit
limite n'est pas par utilisateur, mais par processus! Voir unix.stackexchange.com/questions/55319/…Je ne suis pas sûr de bien comprendre le sens de cette phrase (l'anglais n'est pas ma langue maternelle). Si cette phrase signifie que la configuration ulimit des descripteurs de fichier n'est pas une limitation par processus, la réponse acceptée (AFAIK) est fausse.
Ce que je veux dire, c’est que si un utilisateur a lancé 4 processus et que la configuration ulimit pour les FD est de 1024, chaque processus peut ouvrir 1024 FD. L'utilisateur ne sera pas limité à 1024 FD, mais aux processus qui sont lancés par cet utilisateur.
Par exemple:
Voici un exemple de Perl où nous atteignons la limite (c'est une limite par processus):
Résultat:
1021 car il y avait 3 descripteurs de fichier ouverts avant d'atteindre la boucle while (stdout, stdin et stderr)
Désolé si je me trompe complètement ou si j'ai mal compris la réponse.
la source