Question Augmenter le nombre maximum de descripteurs de fichiers ouverts dans Snow Leopard?


J'essaie de faire quelque chose qui nécessite un grand nombre de descripteurs de fichiers

sudo ulimit -n 12288 est aussi haut que Snow Leopard veut aller; au-delà de cela se traduit par

/ usr / bin / ulimit: ligne 4: ulimit: fichiers ouverts: impossible de modifier la limite: argument invalide.

Je veux augmenter le nombre beaucoup plus haut, disons 100000. Est-ce possible?


95
2018-06-27 10:56


origine


Les réponses à cette question ne fonctionnent plus dans OSX Mavericks. - Howard
Fonctionnement echo limit maxfiles 10000 10000|sudo tee -a /etc/launchd.conf et redémarrer pour moi dans Mavericks. - user495470


Réponses:


En utilisant ulimit commande modifie uniquement les limites de ressources pour le shell actuel et ses enfants et sudo ulimit crée un shell racine, ajuste ses limites, puis quitte (ayant ainsi, pour autant que je sache, aucun effet réel).
Pour dépasser 12288, vous devez ajuster le noyau kern.maxfiles et kern.maxfilesperproc paramètres, et aussi (au moins selon cette entrée de blog, qui est un résumé de cette discussion) une limite de lancement. Vous pouvez utiliser launchctl limit pour ajuster tous ces éléments à la fois:

sudo launchctl limit maxfiles 1000000 1000000

Pour rendre ce permanent (c.-à-d. Pas réinitialisé lorsque vous redémarrez), créez /etc/launchd.conf contenant:

limit maxfiles 1000000 1000000

alors vous pouvez utiliser ulimit (mais sans le sudo) pour ajuster votre limite de processus.

Si ce n'est pas le cas, vous risquez de rencontrer des limites de taille dans le noyau. Si votre modèle le supporte, démarrer le noyau dans Mode 64 bits peut aider.


90
2018-06-27 21:17



sudo launchctl limit maxfiles 1000000 unlimited Ni la limite stricte ni la limite de "maxfiles" ne peuvent être illimitées. Veuillez utiliser un paramètre numérique pour les deux. - Thomas Hunter
Soyez prudent lorsque vous ajoutez cette ligne à launchd.conf. Je pense que si le nombre est trop petit, cela peut rendre votre ordinateur inutilisable. Par exemple, j'ai utilisé limit maxfiles 1024 1024 et j'ai eu beaucoup de mal à le changer. - Shawn
Hélas: "Le fichier /etc/launchd.conf n'est plus consulté pour les sous-commandes à exécuter au démarrage initial; cette fonctionnalité a été supprimée pour des raisons de sécurité." - Alice Purcell
Cela ne fonctionne pas, mon numéro de fd ne peut pas dépasser 6k même si je mets ulimit -Sn 10240 avec succès. - Jian Weihang
Les nombres @JianWeihang fd sont par processus alors je suppose que d'autres processus ont eu 4000 fichiers ouverts. Est-ce qu'il vous arrive d'exécuter Chrome? ;) - Trejkaz


Les éléments suivants doivent résoudre la plupart des solutions (et sont répertoriés dans l'ordre de leur hiérarchie):

echo 'kern.maxfiles=20480' | sudo tee -a /etc/sysctl.conf
echo -e 'limit maxfiles 8192 20480\nlimit maxproc 1000 2000' | sudo tee -a /etc/launchd.conf
echo 'ulimit -n 4096' | sudo tee -a /etc/profile

Remarques:

  1. Vous devrez redémarrer pour que ces modifications prennent effet.
  2. AFAIK vous ne pouvez plus définir des limites à «illimité» sous OS X
  3. launchctl maxfiles sont liés par sysctl maxfiles, et ne peut donc pas les dépasser
  4. sysctl semble hériter de kern.maxfilesperproc depuis launchctl maxfiles
  5. ulimit semble hériter de la valeur 'open files' de launchctl par défaut
  6. vous pouvez définir un ulimit personnalisé dans / etc / profile, ou ~ / .profile; Bien que cela ne soit pas nécessaire, j'ai fourni un exemple
  7. Soyez prudent lorsque vous définissez l'une de ces valeurs à un nombre très élevé par rapport à leur valeur par défaut - les fonctionnalités existent en termes de stabilité / sécurité. J'ai pris ces exemples de numéros que je crois raisonnables, écrits sur d'autres sites.

41
2017-12-03 12:07



Hélas: "Le fichier /etc/launchd.conf n'est plus consulté pour les sous-commandes à exécuter au démarrage initial; cette fonctionnalité a été supprimée pour des raisons de sécurité." - Alice Purcell


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

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

1. Dans Library/LaunchDaemons créer un fichier nommé limit.maxfiles.plist et collez les éléments suivants dans (n'hésitez pas à modifier les deux nombres (qui sont respectivement les limites souples et les limites strictes):

<?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. Changer 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

28
2018-01-24 14:50



Cette réponse est géniale, et j'ai trouvé quelques informations à ajouter ici, @ninjaPixel: blog.dekstroza.io/ulimit-shenanigans-on-osx-el-capitan - Dean Radcliffe


Il semble que OS X Lion n'autorisera pas "illimité" comme valeur:

% sudo launchctl limit maxfiles 8192 unlimited
Neither the hard nor soft limit for "maxfiles" can be unlimited. Please use a numeric parameter for both.

Fournir des valeurs numériques pour la limite souple et la limite stricte fait le travail:

% sudo launchctl limit maxfiles 4096 8192

20
2017-12-10 10:11



Si l'une des valeurs était illimité, en utilisant -1 comme valeur résulte en 12288. Il est possible d'utiliser des valeurs numériques plus grandes, par ex. sudo launchctl limit maxfiles 15000 150000. Je ne suis pas sûr que ces paramètres aient un effet alors, cependant. - Daniel Beck♦


Sur Mavericks c'est simple. En tant qu'utilisateur régulier:

ulimit -n 8192

Vous pouvez vérifier les paramètres mis à jour via

ulimit -a

Sur ma machine:

ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       709
-n: file descriptors                8192

7
2017-09-04 15:44



Pensez à réviser votre solution. Vous définissez un ulimit de 1024, puis affichez les descripteurs de fichier de sortie en 8192 (devrait être 1024). Votre approche est également probelmatique sans sudo, essayez de la changer quelques fois pour vous. - y3sh
sudo ne doit pas être utilisé ici mais cette réponse est incorrecte. Les utilisateurs non-conformistes doivent utiliser echo limit maxfiles 10000 10000|sudo tee -a /etc/launchd.conf puis redémarrez leur machine - Kyle Chadha


Certaines limites ne peuvent pas être modifiées par ulimit, car ils ne s'appliquent qu'au shell actuel, donc launchctlcommande doit être utilisée pour modifier les limites globalement, par ex.

sudo launchctl limit maxfiles 100000 unlimited

S'il vous plaît noter que l'application de ces limites dans /etc/launchd.conf (comme suggéré dans d'autres réponses) n'est plus pris en charge dans les dernières versions de macOS. Bien que peut encore utiliser launchd.plist (voir: man launchd.plist) comme par utilisateur ou à l'échelle du système plist fichiers de configuration comme suggéré ici et .


Pour que ces limites persistent, vous pouvez utiliser /etc/sysctl.conf fichier et ajouter par exemple:

kern.maxprocperuid=1000
kern.maxproc=2000
kern.maxfilesperproc=20000
kern.maxfiles=50000

Pour que les modifications prennent effet, il faut redémarrer.

Pour voir les limites actuelles, exécutez: launchctl limit ou sysctl -a | grep ^kern.max.

Voir également: Comment persister les paramètres ulimit dans macOS?


0
2017-07-29 13:27