249 votes

Existe-t-il un correctif pour l'erreur "Too many open files in system" sous OS X 10.7.1 ?

J'ai besoin de me débarrasser de l'ennuyeuse limite "Trop de fichiers ouverts dans le système" sur OS X 10.7.1. 

Y a-t-il un moyen ?

4 votes

Voulez-vous expliquer plus en détail quand cela se produit ? Dans quelles circonstances ?

1 votes

@slhck - J'ai le même problème. Les circonstances sont essentiellement "au hasard". Je suis un développeur, donc j'utilise mon Mac de manière assez intensive : j'exécute une ou plusieurs bases de données, un serveur web, des outils de test, un ou plusieurs navigateurs et un lecteur de musique en même temps. Google Chrome semble être un programme qui a beaucoup de fichiers ouverts.

2 votes

En fait, mon "utilisation intensive" n'était pas le problème ; mes paramètres pour le nombre maximum de fichiers ouverts pour le noyau et par processus étaient bien inférieurs à ce que les valeurs par défaut devraient être.

6voto

Dzmitry Hubin Points 161

Pour la dernière version de macOS (au moment de la rédaction : 10.14.1), vous pouvez utiliser sudo launchctl limit maxfiles 64000 524288 (par défaut, elle est de 256), mais elle ne fonctionne que dans la session en cours. Utilisez launchctl job de @ninjaPixel ( https://superuser.com/a/1171028/760235 ) pour une solution permanente.

3voto

Uros Velickovic Points 31

Après tous les changements ci-dessus, mon java n'a pas créé plus de 10000 fichiers. La solution était ce drapeau jvm -XX:-MaxFDLimit

3voto

angelokh Points 131

Similaire à https://superuser.com/a/1171028/367819

Pour vérifier les limites actuelles sur votre système Mac OS X, exécutez :

launchctl limit maxfiles

Les deux dernières colonnes sont respectivement les limites douce et dure.

Pour ajuster les limites de fichiers ouverts à l'échelle du système dans Mac OS X Yosemite, vous devez créer deux fichiers de configuration. Le premier est un fichier de liste de propriétés (aka plist) dans /Library/LaunchDaemons/limit.maxfiles.plist qui contient la configuration XML suivante :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
    <dict>
      <key>Label</key>
        <string>limit.maxfiles</string>
      <key>ProgramArguments</key>
        <array>
          <string>launchctl</string>
          <string>limit</string>
          <string>maxfiles</string>
          <string>200000</string>
          <string>200000</string>
        </array>
      <key>RunAtLoad</key>
        <true/>
      <key>ServiceIPC</key>
        <false/>
    </dict>
  </plist>

Ceci fixera la limite des fichiers ouverts à 200000. Le deuxième fichier de configuration plist doit être stocké dans /Library/LaunchDaemons/limit.maxproc.plist avec le contenu suivant :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
    <dict>
      <key>Label</key>
        <string>limit.maxproc</string>
      <key>ProgramArguments</key>
        <array>
          <string>launchctl</string>
          <string>limit</string>
          <string>maxproc</string>
          <string>2048</string>
          <string>2048</string>
        </array>
      <key>RunAtLoad</key>
        <true />
      <key>ServiceIPC</key>
        <false />
    </dict>
  </plist>

Les deux fichiers plist doivent appartenir à root:wheel et avoir les permissions -rw-r--r--. Ces permissions devraient être en place par défaut, mais vous pouvez vous en assurer en exécutant sudo chmod 644 . Bien que les étapes expliquées ci-dessus fassent en sorte que les limites de fichiers ouverts à l'échelle du système soient correctement définies au redémarrage, vous pouvez les appliquer manuellement en exécutant launchctl limit.

En plus de définir ces limites au niveau du système, nous vous recommandons de les définir également au niveau de la session en ajoutant les lignes suivantes à votre fichier bashrc, bashprofile ou analogue :

ulimit -n 200000
ulimit -u 2048

Comme pour les fichiers plist, votre bashrc ou un fichier similaire doit avoir des permissions -rw-r--r--. À ce stade, vous pouvez redémarrer votre ordinateur et entrer ulimit -n dans votre terminal. Si votre système est configuré correctement, vous devriez voir que maxfiles a été fixé à 200000.


Vous pouvez suivre cet article pour plus de détails.

https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c


N'oubliez pas de redémarrer votre Mac pour que les valeurs soient effectives.

2voto

osbor Points 21

L'augmentation du nombre de fichiers autorisés en lecture et en écriture ne doit jamais être considérée comme une bonne pratique courante.

Comme sanmai et d'autres l'ont suggéré, vous pouvez simplement essayer de tuer certains processus envahissants. Probablement ceux qui sont impliqués dans l'augmentation du nombre de manipulations de fichiers.

1-/ La première étape consiste à récupérer les processus les plus consommateurs de fichiers.

lsof -n +c 0 | cut -f1 -d' ' | uniq -c | sort | tail

2-/ Deuxième étape : utiliser ces noms pour tuer tous les processus qu'ils impliquent. Attention à ne pas tuer systématiquement un processus consommateur de fichiers qui pourrait être indispensable à votre activité actuelle.

ps -e -a |grep file-consuming-process |for i in `awk {'print$1'}`; do kill -9 $i; done

répétez le processus jusqu'à ce que vous ayez tué les démons puissants indésirables.

Amusez-vous bien :)

1voto

SaintKnight Points 11

Vous pouvez exécuter

lsof -n

quel processus ouvre trop de fichiers.

puis le tuer.

o

sysctl -w kern.maxfiles=20480

le changer pour un plus grand.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X