web-dev-qa-db-fra.com

La limite de fichiers ouverts ne fonctionne plus comme auparavant dans OSX Yosemite

Je viens de mettre à jour Mac OS X vers Yosemite, et maintenant certaines applications ne fonctionnent pas (IBM DB2). Je sais que je dois définir les fichiers ouverts sur 65000, mais la commande ne fonctionne pas.

Andress-MBP:~ root# ulimit -n 12288
Andress-MBP:~ root# ulimit -n 12289
-sh: ulimit: open files: cannot modify limit: Invalid argument

Pourquoi cela se produit-il et comment puis-je résoudre le problème?

22
AngocA

Il semble qu'il existe une méthode totalement 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. Dans /Library/LaunchDaemons, créez un fichier nommé limit.maxfiles.plist et collez le texte suivant dans (n'hésitez pas à modifier les deux nombres, qui correspondent respectivement aux limites logicielle et matérielle):

    <?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
    
25
ninjaPixel

Je vois que vous avez posé cette question partout.

Vous devez gérer une limite de noyau, kern.maxfiles, qui est la limite de noyau et qui ne peut pas être dépassée lors de la définition de ulimit.

Consultez la page de blog cryptée Nombre maximal de fichiers sous Mac OS X pour obtenir une description de la manipulation de kern.maxifiles à l'aide de sysctl.

Je n'ai pas encore chargé Yosemite sur mon Mac. Le sysctl -w kern.maxfiles=65000 fonctionne sur Mavericks, qui a la même limite kern.maxfiles = 12288 par défaut.

J'ai vérifié sur mon VM OS X 10.6.8 et il avait la même limite, ce qui pose la question de savoir comment cela fonctionnait auparavant avant votre version d'OS X.

Il existe un partage de diapositives ( DB2 pour Mac OS X Installation et configuration de DB2 pour Mac OS X ) indiquant les limites recommandées pour l’utilisation de DB2. Voir Augmenter les paramètres système page 7.

Augmenter les paramètres du système

Ouvrez /etc/sysctl.conf (ou créez-le s'il n'existe pas déjà) et insérez les paramètres suivants. Ces paramètres augmentent certains paramètres de mémoire partagée et de limites utilisateur nécessaires à DB2 pour fonctionner sur Mac.

Ajoutez ce qui suit à /etc/sysctl.conf
kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
kern.sysv.shmseg = 32
kern.sysv.shmall = 1179648
kern.maxfilesperproc = 65536
kern.maxfiles = 65536

On dirait que vous avez perdu votre fichier /etc/sysctl.conf lors de la mise à niveau.

20
user187561

Sous Mac OS 10.10, il semble que le paramètre ulimit ne puisse pas dépasser la limite de la commande launchctl.

Donc, vous devriez d’abord lancer launchctl limit maxfiles dans le terminal pour obtenir le réglage actuel:

launchctl limit maxfiles
maxfiles    256            unlimited 

Donc, dans mon cas, la limite souple est de 256, la limite stricte est illimitée. Et puis, si je veux définir la limite souple à 512:

Sudo launchctl limit maxfiles 512 unlimited

L’utilisation détaillée de launchctl pour la définition des limites est disponible ici: https://developer.Apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html

12
imadcat