2012-06-07 08:52:49 +0000 2012-06-07 08:52:49 +0000
202
202
Advertisement

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

Advertisement

Je dois me débarrasser de la fâcheuse limite “Too many open files in system” sous OS X 10.7.1.&nbsp ;

Y a-t-il un moyen ?

Advertisement
Advertisement

Réponses (10)

234
234
234
2012-06-29 20:23:19 +0000

Selon cet article utile (que je vous recommande de lire) :

Par défaut, le nombre maximum de fichiers que Mac OS X peut ouvrir est fixé à 12 288 et le nombre maximum de fichiers qu'un processus donné peut ouvrir est de 10 240.

Vous pouvez vérifier ces limites avec :

  • sysctl kern.maxfiles
  • sysctl kern.maxfilesperproc

Vous pouvez augmenter les limites (à vos propres risques) avec : Pour rendre la modification permanente, utilisez sysctl -w kern.maxfiles=20480 pour mettre vos paramètres dans sysctl -w kern.maxfilesperproc=18000 (que vous devrez peut-être créer), comme ceci :

kern.maxfiles=20480
kern.maxfilesperproc=18000

Note : Dans OS X 10. 10 ou moins, vous pouvez ajouter un paramètre dans sudo comme /etc/sysctl.conf et il remplacera ce que vous avez mis ici.

Encore une fois, tiré de l'article :

Une fois que vous avez fait cela, le noyau lui-même aura un nombre maximum de fichiers mais le shell pourrait ne pas en avoir. Et comme la plupart des processus qui vont prendre autant de fichiers vont être initiés par le shell, vous allez vouloir augmenter ce nombre.

La commande pour cela est :

ulimit -S -n 2048 # or whatever number you choose

Ce changement est également temporaire ; il ne dure que pour la session shell en cours. Vous pouvez l'ajouter à votre fichier de configuration du shell (/etc/launchd.conf, limit maxfiles ou autre) si vous voulez qu'il s'exécute à chaque fois que vous ouvrez un shell.

63
63
63
2017-01-24 14:56:37 +0000

Il semble qu'il existe une méthode entièrement différente pour modifier la limite de fichiers ouverts pour chaque version d'OS X !

Pour OS X Sierra (10.12.X), vous devez :

1. Créer un fichier à /Library/LaunchDaemons/limit.maxfiles.plist et coller ce qui suit (n'hésitez pas à modifier les deux chiffres (qui sont les limites soft et hard, respectivement) :

<?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>64000</string>
      <string>524288</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceIPC</key>
    <false/>
  </dict>
</plist>

*2. * Changez le propriétaire de votre nouveau fichier :

sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist

3. Chargez ces nouveaux paramètres :

sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist

4. Enfin, vérifiez que les limites sont correctes :

launchctl limit maxfiles
34
Advertisement
34
34
2012-06-07 11:09:52 +0000
Advertisement

Vous devrez augmenter vos paramètres ulimit - ils sont assez bas sous OS X ces jours-ci - 256 par défaut. Ajoutez ulimit -n 4096 ou un nom similaire à votre ~/.profile ou équivalent et cela résoudra le problème dans votre environnement local. Exécutez ulimit -a pour vérifier vos niveaux actuels

Pour voir les paramètres du système, exécutez ceci :

launchctl limit maxfiles

Il est défini un peu plus haut dans Lion (10240) sur une base par processus qu'il ne l'était auparavant. Mais si vous continuez à l'utiliser, vous pouvez le régler plus haut en utilisant la même commande avec les niveaux souhaités. Pour rendre les changements permanents, vous devez ajouter les lignes correspondantes dans le fichier /etc/launchd.conf.

34
34
34
2017-02-18 00:42:52 +0000

Une autre option consiste à trouver le coupable :

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

Pour ce dernier, vous pouvez voir quels fichiers sont ouverts :

sudo lsof -n | grep socketfil

Et tuer le processus si vous le souhaitez :

kill $pid

A partir des commentaires :

Pour ce que cela vaut, vous pouvez également obtenir une liste des ID de processus avec les fichiers les plus ouverts en utilisant

lsof -n | sed -E 's/^[^]+[]+([^]+).*$//' | uniq -c | sort | tail
10
Advertisement
10
10
2014-09-04 16:19:11 +0000
Advertisement

Les amis, sur Mavericks 10.9.4

ulimit -n 2048 fonctionne bien. Vous devrez peut-être lancer une nouvelle session de connexion.

5
5
5
2018-11-23 16:59:24 +0000

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

1
Advertisement
1
1
2017-05-18 02:52:29 +0000
Advertisement

Vous pouvez exécuter

lsof -n

qui traitent trop de fichiers ouverts.

puis le tuer .

ou

sysctl -w kern.maxfiles=20480

le changer pour un plus gros.

1
1
1
2019-01-25 13:15:52 +0000

Après toutes les modifications apportées à mon java, je n'ai pas fait plus de 10000 fichiers. La solution était ce drapeau jvm -XX:-MaxFDLimit

0
Advertisement
0
0
2019-05-29 17:55:40 +0000
Advertisement

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

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

launchctl limit maxfiles

Les deux dernières colonnes sont respectivement les limites soft et hard.

Pour ajuster les limites de fichiers ouverts sur l'ensemble 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 (alias 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>

Cela fixera la limite des fichiers ouverts à 200000. Le second 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 être détenus par root:wheel et avoir les permissions -rw-r–r–. Ces permissions devraient être en place par défaut, mais vous pouvez vous assurer qu'elles le sont en exécutant sudo chmod 644 . Bien que les étapes expliquées ci-dessus permettent de définir correctement les limites de fichiers ouverts à l'échelle du système 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 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 les fichiers plist, votre fichier bashrc ou analogue doit avoir les permissions -rw-r–r–. À ce stade, vous pouvez redémarrer votre ordinateur et entrer ulimit -n dans votre terminal. Si votre système est correctement configuré, vous devriez voir que maxfiles a été réglé sur 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.

0
0
0
2016-12-14 18:50:26 +0000

Je l'ai rencontré en faisant un chmod -R donc je l'ai fait circuler en faisant des petits pas, par exemple

# for each directory
find . -type d -exec chmod 755 {} \;
Advertisement

Questions connexes

12
5
13
8
5
Advertisement