Avant Mavericks, je pouvais utiliser /etc/launchd.conf
file pour modifier la consommation maximale de ressources système, par exemple:
limit maxfiles 16384 unlimited
limit maxproc 16384 unlimited
Cela ne fonctionne plus dans Mavericks.
Quelle est la bonne façon de le faire dans la version récente d'OS X?
/etc/sysctl.conf
, pas/etc/sysctrl.conf
.sudo serverinfo --setperfmode true
une fois pour mettre votre machine en "Mode de performance serveur". Ensuite, vous avez un "maximum plus élevé", selon la configuration de votre machine. S'il vous plaît voir mon post à discussions.apple.com/thread/5166397 pour plus de détails. Pour 10.10 (Yosemite), le mode est activé par défaut (au moins sur ma machine!). Voir ma réponse ci-dessous.Réponses:
Limite de session shell
Les limites définies via
ulimit
uniquement affectent les processus créés par la session shell en cours.root
(l'administrateur) en exécutant des commandes de configuration du système ou en modifiant les fichiers de configuration du système.Une fois que vous avez terminé la session shell (par Ctrl+ D,
exit
fermeture de laTerminal.app
fenêtre, etc.), les paramètres ont disparu. Si vous souhaitez utiliser le même paramètre lors de la prochaine session shell, ajoutez-le au script de démarrage du shell.NOTE: Si vous utilisez
bash
, alors il devrait être~/.bash_proile
ou~/.bash_login
. Si vous utilisez d'autres coquilles, cela devrait probablement l'être~/.profile
.Limite du système (nécessite que le redémarrage prenne effet)
Pour 10.9 (Mavericks), 10.10 (Yosemite), 10.11 (El Capitan) et 10.12 (Sierra):Vous devez créer un fichier dans
/Library/LaunchDaemons/limit.maxfiles.plist
(propriétaire:,root:wheel
mode:)0644
:Vous devriez changer les chiffres en fonction de vos besoins. Ils sont respectivement la "limite logicielle" (
Pour 10.8 (Lion de montagne):262144
) et la "limite stricte" (524288
). Pour plus d'informations, consultez la page de manuel en cours d'exécutionman launchd.plist
.Vous pouvez ajouter les lignes suivantes à
/etc/sysctl.conf
(owner:,root:wheel
mode:)0644
:Vous devriez changer les chiffres en fonction de vos besoins. Ils correspondent respectivement à la "limite globale du système" (
Pour les anciens Mac OS X (je suppose que cela fonctionne sur 10.7 (Lion) ou avant):kern.maxfiles
) et à la "limite par processus" (kern.maxfilesperproc
). Pour plus de paramètres, consultez la page de manuel en lançantman sysctl
ou lisez le code source à l'adresse/usr/include/sys/sysctl.h
.Vous pouvez ajouter la ligne suivante à
/etc/launchd.conf
(owner:,root:wheel
mode:)0644
:Vous devriez changer les chiffres en fonction de vos besoins. Ils sont respectivement la "limite logicielle" (
Si le système ne vous permet pas de définir des limites supérieures à une certaine valeur ...262144
) et la "limite stricte" (524288
).Le système ne vous permet pas de définir une valeur supérieure à un "maximum maximum" (proposé par Apple). Pour augmenter ce "maximum", vous devez acheter "OS X Server" sur "App Store", puis vous devez exécuter la commande suivante une fois:
Ceci active le "mode de performance du serveur" sur votre machine. Vous pouvez ensuite définir le maximum en fonction de la configuration de votre machine (voir ci-dessous) . J'ai déjà essayé ça (sur Mountain and Mavericks) et ça marche! S'il vous plaît voir mon post ( ici ) pour plus d'informations.
Références
la source
/etc/launchd.conf
approche montre un effet lorsque je coursulimit -n
. Quelqu'un pourrait-il mettre à jour les instructions si cela est important?/etc/sysctl.conf
: superuser.com/questions/827984/…Il semble que créer le fichier
/etc/launchd.conf
et y mettre votre commande devrait faire l'affaire.Si cela ne fonctionne pas, vous pouvez probablement éditer ou créer le
/etc/rc.local
fichier et y ajouter votre commande, car il y a peu de chance que Apple supprime la prise en charge de la limite sur la ligne de commande.Edit 1 :
J'aurais dû commencer par cela, la
launchd
page de manuel fait référence aux fichiers suivants:Mon pari est que vous devez maintenant placer votre commande dans
~/Library/LaunchAgents
ou dans/Library/LaunchDaemons
.Vous devriez essayer les deux.
Edit 2 : Il
faut aussi savoir que launchd besoin fichier XML et des scripts non seulement. une interface graphique a été conçue pour aider dans cette tâche, une autre qui n’est pas gratuite est Lingon . Peut-être que d'autres produits gratuits existent.
la source
/etc/launchd.conf
et/etc/rc.local
sont ignorés dans 10,10 et plus tard, puisque dans 10,10 launchd a été redessinée et SystemStarter a été retiré.Je viens d'ajouter ces deux lignes dans mes
.bash_profile
œuvres comme un charme
la source
ulimit -n -H
. Sur macOS High Sierra, il étaitunlimited
tellement difficile de changer la limite "souple" de l'utilisateur.bash_profile
.Limites du système
La modification des limites dans
/etc/launchd.conf
ou/etc/rc.local
n'est plus prise en charge par le récent macOS. Voir: Anciens systèmes et technologies .Au lieu de cela, vous devez créer un nouvel agent de lancement .
Voici l'exemple de commande utilisant la
PlistBuddy
commande (voir:)man PlistBuddy
:Et similaire pour
maxproc
limite:Pour charger les fichiers ci - dessus, exécutez:
sudo launchctl load /Library/LaunchAgents/com.launchd.*.plist
.Remarques:
cat
ouPlistBuddy -x -c Print /Library/LaunchAgents/com.launchd.maxfiles.plist
.tail -f /var/log/system.log
.launchd
limites, exécutez:launchctl limit
..plist
fichier peut être placé dans un dossier d'agent par utilisateur ou système (LaunchAgents
). Voir:man launchd
etman launchd.plist
, ou ceci ou cette réponse pour plus de détails.Limites du noyau
Veuillez noter que les limites ci-dessus du système Launchd sont toujours limitées par le noyau, vous ne pouvez donc pas les définir plus haut que les limites réelles définies dans les variables d'état du noyau (voir:
man sysctl
pour obtenir de l'aide).Pour voir les limites du noyau en cours, exécutez:
sysctl -a | grep ^kern.max
.Pour augmenter la
maxfiles
limite, exécutez:sudo sysctl -w kern.maxfiles=20480
.Pour les faire persister, utilisez la même méthode pour créer un
.plist
fichier de démarrage , par exempleShell limites
Pour les limites du shell, ajoutez une
ulimit
commande~/.bashrc
ou~/.bash_profile
un fichier de démarrage approprié pour un utilisateur individuel ou/etc/bashrc
pour tous les utilisateurs. Voir: Comment ajouter des paramètres de shell persistant ulimit sur Mac?Lignes suggérées pour ajouter:
la source
maxproc
car par défaut, la limite stricte du noyau sur ce paramètre est 1064, ce qui signifie quemaxprocperuid < maxproc
vous devez définir 2000 ou "unlimited" pour ne définir que 1064. Malheureusement, le noyau ne l'applique pas et les paramètres que vous proposez laisseront système avecmaxprocperuid=2000
etmaxproc=1064
qui est dangereux. En savoir plus à ce sujet ici .Si vous avez un seul programme qui frappe un
ulimit
(une limite douce sur le nombre de fichiers qu'un seul processus peut ouvrir), il est correct de l'ajusterulimit
à un nombre plus élevé, surtout si vous pouvez simplement insérer laulimit
commande dans votre.bash_profile
. Au - delà de cela, je vous conseille fortement contre les fichiers d'édition comme/etc/launchd.conf
ou/etc/sysctl.conf
ou l' ajout de fichiers plist sous/Library/LaunchDaemons/
pour quelques raisons.Les modifications apportées à ces fichiers persistent dans les sauvegardes et sont reportées dans les nouvelles versions de macOS et les nouveaux ordinateurs lors de la mise à niveau.
Si ces modifications entraînent des problèmes (ce qui est une possibilité réelle), vous devez vous rappeler que vous avez effectué les modifications et quels en sont les modifications, puis rééditez les fichiers pour les annuler. Cela peut arriver des années plus tard.
Après quelques années de mise à niveau, vous constaterez peut-être que ce qui était auparavant une augmentation d'une limite correspond désormais à une diminution d'une limite. Mais vous ne saurez probablement pas que parce que vous (a) ne vous souviendrez pas que vous avez effectué le changement et (b) ne pourrez pas voir les nouvelles limites car vous les avez dépassées depuis le début.
Une bien meilleure option
En général, plutôt que de régler des paramètres individuels sur le système et de déséquilibrer celui-ci (et de laisser éventuellement un seul programme planter le système en prenant toutes les ressources), si les limites système par défaut ne suffisent pas à vos besoins, je vous recommande de choisir sur "Server Performance Mode", ou du moins l'essayer. Pour ce faire, OS X / macOS 10.8 Mountain Lion ou version ultérieure et au moins 16 Go de mémoire installés sont nécessaires. Au début, vous deviez payer pour cela, mais à partir de OS X 10.8 Mountain Lion, il est gratuit et officiellement pris en charge par Apple avec le système d'exploitation standard.
L'activation de ce mode augmente considérablement les limites du système, notamment le nombre de processus que vous pouvez exécuter et le nombre de fichiers que vous pouvez ouvrir, au détriment de l'allocation de mémoire supplémentaire au noyau du système. Vous pouvez lire en détail ce qui est modifié par le mode de performance du serveur dans la réponse à la question "Qu'est-ce que serverperfmode = 1 fait réellement sur macOS?" .
Ce mode présente plusieurs avantages par rapport à la modification des fichiers de configuration, comme le suggèrent d’autres réponses.
Activer ou désactiver le mode de performance du serveur
Pour activer le mode de performance du serveur, utilisez le terminal pour exécuter l'une de ces commandes, puis redémarrez-le pour qu'il prenne effet:
et l'éteindre avec
Apple recommande officiellement les commandes ci-dessus, mais il y a en fait un problème. Si vous exécutez la commande "allumer" deux fois, vous devez exécuter la commande "éteindre" deux fois pour l'éteindre. Donc, vérifiez si il est activé ou désactivé après avoir effectué un changement en exécutant
Si la sortie inclut "serverperfmode = 1", le paramètre est activé et, dans le cas contraire, il est désactivé.
et l'éteindre avec
Vérifiez le réglage avec
Le paramètre ne prendra effet qu'après le redémarrage du système.
Vérification pour voir si l'ordinateur est en cours d'exécution en mode de performance du serveur
En vérifiant les paramètres, vous saurez s'il est configuré pour prendre effet (ou non) après le redémarrage. Pour vérifier s’il est actuellement actif (en supposant que vous avez suivi mes conseils et n’aviez pas modifié les fichiers de configuration modifiant les paramètres), exécutez
Cela vous donnera un nombre correspondant au nombre maximum de processus autorisés par le système. Si ce nombre est un multiple de 532 , le mode de performance du serveur est désactivé. S'il s'agit d'un nombre rond (un multiple de 2500), le mode de performance du serveur est activé pour le système en cours d'exécution.
la source