19 votes

Comment augmenter correctement une limite `ulimit -n` ?

J'essaie de télécharger le Démonstration de X-Plane 10 par l'intermédiaire de uTorrent, mais je reçois tout le temps l'erreur "too many open files". Je peux faire le téléchargement alternatif (qui prend une éternité), mais je me demande comment je peux augmenter le paramètre dans Lion ?

J'ai trouvé des informations contradictoires à ce sujet, certains disent que ulimit -n y sysctl sont les outils de choix, tandis que d'autres rapportent que launchctl est correct.

La valeur déclarée pour ulimit -n est de 256, de même pour launchctl limit :

cpu         unlimited      unlimited      
filesize    unlimited      unlimited      
data        unlimited      unlimited      
stack       8388608        67104768       
core        0              unlimited      
rss         unlimited      unlimited      
memlock     unlimited      unlimited      
maxproc     709            1064           
maxfiles    256            unlimited

0 votes

R W

13voto

errant.info Points 278

Les éléments suivants devraient résoudre la plupart des solutions (et sont énuméré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

Notes :

  1. Vous devrez redémarrer pour que ces changements prennent effet.
  2. A ma connaissance, vous ne pouvez plus fixer de limites "illimitées" sous OS X.
  3. les fichiers max de launchctl sont limités par les fichiers max de sysctl, et ne peuvent donc pas les dépasser
  4. sysctl semble hériter de kern.maxfilesperproc de 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 caractéristiques existent stabilité/sécurité. J'ai pris ces exemples de chiffres que je crois raisonnables, écrits sur d'autres sites web.
  8. Lorsque les limites de launchctl sont inférieures à celles de sysctl, il a été signalé que les limites de sysctl pertinentes seront automatiquement augmentées pour répondre aux exigences.

11voto

kenorb Points 11627

En gros, ulimit contrôle les ressources disponibles pour le shell et ses processus, où launchctl contrôle le maximum de ressources pour le système et ses processus.

Pour le shell actuel, la limite du nombre maximum de fichiers ouverts peut être modifiée par : ulimit -n 10240 .

Note : Vous pouvez utiliser des -S pour un paramètre soft ou -H pour la limite dure.

Si la limite de l'obus ne peut pas être modifiée, vous devez alors utiliser la fonction launchctl d'abord, par exemple

sudo launchctl limit maxfiles 10240 unlimited

Pour modifier les limites du noyau, exécutez : sudo sysctl -w kern.maxfiles=10240 .

Pour en savoir plus :

1voto

Jeff Burdges Points 1200

Vous pouvez augmenter le nombre maximum de fichiers ouverts en exécutant ulimit -n 1024 et lancer uTorrent depuis la ligne de commande. Dans mon cas, je lance Transmission à l'aide de la commande :

/Applications/Transmission.app/Contents/MacOS/Transmission

Vous devez lancer l'application torrent à partir du shell où vous avez invoqué ulimit, vos changements n'ont aucun effet autrement, bien isoler les changements est l'avantage de ulimit.

0 votes

Cela ne semble pas aider, même avec le maximum que ulimit -n permet de fixer (10240), j'obtiens la même erreur :(

2 votes

Mais comment modifier le ulimit pour la machine, pour le prochain redémarrage ?

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X