Quel fichier de commande / configuration contrôle les limites de fichiers ouverts sur OS X? Existe-t-il une commande différente pour OS X 10.5 / 10.6 / 10.7? Les options ci - dessous sont que j'explore ulimit
, sysctl
etlaunchctl
"Trop de fichiers ouverts" est apparemment une erreur courante sur Leopard, peut-être d'autres versions d'OS X:
Il existe de nombreuses façons (connexes?) D'afficher les limites des fichiers ouverts:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 2048
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 512
virtual memory (kbytes, -v) unlimited
$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 1024 2048
maxfiles 2048 4096
$ sysctl -a | grep files
kern.maxfiles = 32768
kern.maxfilesperproc = 16384
kern.maxfiles: 32768
kern.maxfilesperproc: 16384
kern.num_files: 2049
Il a été affirmé dans certains des articles ci-dessus que ceux-ci peuvent être modifiés avec les commandes suivantes:
sudo launchctl limit maxfiles 16384 32768
sudo ulimit -n 32768
sudo sysctl -w kern.maxfilesperproc=16384
sudo sysctl -w kern.maxfiles=32768
Cependant, parmi les commandes ci-dessus, seules les sysctl
commandes ont un effet apparent (c'est-à ulimit -n
- dire launchctl limit
qu'elles ne montrent aucun changement après que les commandes ci-dessus ont été entrées, alors sysctl -a
qu'elles montrent les modifications demandées).
Les emplacements correspondants pour modifier ces paramètres pour le système d'exploitation sont:
/etc/sysctl.conf
/etc/launchd.conf
J'ai également découvert une réponse qui lit que ulimit
ne contrôle que le shell actuel.
Comment puis - je ajuster à la hausse les fichiers max / fichiers ouverts max limites macOS?
Les éléments suivants devraient résoudre les problèmes les plus courants (et sont répertoriés dans l'ordre de leur hiérarchie):
Remarques:
la source
En termes simples:
La
ulimit
commande permet de "contrôler les ressources disponibles pour le shell et les processus qu'il crée" (voir:help ulimit
etman bash
). Les ressources accordées au shell sont limitées par les limites des ressources système.Le
launchctl
contrôle la consommation maximale de ressources système par le processus en cours (voir:man setrlimit
etman launchctl
). Les valeurs maximales sont limitées par les limites du noyau.Les
sysctl
contrôles limites noyau (voir:man sysctl
et les limites du noyau Tuning BSD ).Pour augmenter les limites, vous pouvez utiliser chacune des commandes, selon le problème.
Voir aussi: Quelle est la relation entre `launchctl limit` et` ulimit`?
Pour le problème avec trop de fichiers ouverts, cela dépend de la limite exactement souple ou stricte atteinte (que ce soit un script shell local, le script global exécuté par
root
, une application ou tous les processus en même temps). Cela vaut la peine d'augmenter toutes les limites (limites shell, launchd et noyau).Pour augmenter les limites de façon persistante, voir: Comment contrôler de manière persistante la consommation maximale de ressources système sur Mac?
la source