El límite de archivos abiertos no funciona como antes en OSX Yosemite [duplicado]

22

Acabo de actualizar Mac OS X a Yosemite, y ahora algunas aplicaciones no funcionan (IBM DB2). Sé que necesito configurar Open Files en 65000, sin embargo, el comando no funciona.

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

¿Por qué sucede esto y cómo puedo corregir el problema?

AngocA
fuente

Respuestas:

25

¡Parece que hay un método completamente diferente para cambiar el límite de archivos abiertos para cada versión de OS X!

Para OS X Sierra (10.12.X) necesita:

  1. En /Library/LaunchDaemonscrear un archivo llamado limit.maxfiles.plisty pegar lo siguiente (no dude en cambiar los dos números, que son los límites blandos y duros, respectivamente):

    <?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. Cambie el propietario de su nuevo archivo:

    sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
    
  3. Cargue estas nuevas configuraciones:

    sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
    
  4. Finalmente, verifique que los límites sean correctos:

    launchctl limit maxfiles
    
ninjaPixel
fuente
77
¡Esperamos una nueva respuesta para macOS 10.13! :)
NSTJ
1
El proceso no funcionó para mí hasta que reinicié. ¡Gracias! realmente ayudó mucho
user2773086
Esta esencia también dice que modificar estos archivos es la forma de actualizar este límite de archivos abiertos para Sierra gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
Devin G Rhode
1
El reinicio es necesario para que los límites funcionen (incluso si el paso 4 muestra los valores actualizados)
noveno
21

Veo que hiciste esta pregunta por todas partes.

Hay un límite de kernel con el que tiene que lidiar, kern.maxfiles, que es el límite de kernel y no se puede exceder al configurar ulimit.

Consulte la página del blog Krypted Maximum Files en Mac OS X para obtener una descripción sobre cómo manipular kern.maxifiles usando sysctl.

Todavía no he cargado Yosemite en mi Mac. Los sysctl -w kern.maxfiles=65000trabajos sobre los Mavericks, que tiene las mismas kern.maxfiles = 12288 límite por defecto.

Revisé mi VM OS X 10.6.8 y tenía el mismo límite que plantea la cuestión de cómo funcionaba antes de su versión de OS X.

Hay un recurso compartido de diapositivas ( DB2 para Mac OS X Instalación y configuración de DB2 para Mac OS X ) que muestra los límites recomendados para usar DB2, consulte Aumentar los parámetros del sistema en la página 7.

Aumentar los parámetros del sistema

Abra /etc/sysctl.conf (o créelo si aún no existe) e inserte la siguiente configuración. Esta configuración aumenta algunas configuraciones para la memoria compartida y los límites de usuario que DB2 necesita para trabajar en Mac.

Agregue lo siguiente a /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

Parece que perdió su /etc/sysctl.confarchivo cuando actualizó.

usuario187561
fuente
En realidad, instalé DB2 hace mucho tiempo y funcionó. Luego actualicé a Maverick el año pasado, sin ningún problema. Y hoy, actualicé a Yosemite y apareció este problema. No puedo iniciar mi DB2 ya instalado.
AngocA
Otra cosa es que mi sysctl.conf es idéntico al archivo que colocó en su publicación. Creé la primera vez que instalé DB2 (hace un año), pero no lo toqué para la migración.
AngocA
El problema eran algunos espacios en blanco en ese archivo: ibm.com/developerworks/community/forums/html/…
AngocA
1
Espacios finales, quién lo habría pensado. Se supone que Apple tiene algunos de los mejores programadores del mundo.
user187561
@ user187561 sysctl(8)proviene de BSD.
Drew Stephens
12

En Mac OS 10.10 parece que la configuración ulimit no puede exceder la configuración del límite de launchctl.

Por lo tanto, primero debe ejecutar launchctl limit maxfiles en la terminal para obtener la configuración actual:

launchctl limit maxfiles
maxfiles    256            unlimited 

Entonces, en mi caso, el límite suave es 256, el límite duro es ilimitado. Y luego, si quiero establecer el límite flexible en 512:

sudo launchctl limit maxfiles 512 unlimited

El uso detallado de launchctl para establecer límites se puede encontrar aquí: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html

imadcat
fuente
'launchctl limit maxfiles 512 unlimited' parece establecer mis límites (suaves, duros) en (512,10240) en Yosemite 10.10.5 el 30/09/2015
Dave X
2
"launchctl limit maxfiles ilimitado ilimitado; launchctl limit maxfiles" indica que 10240 es el límite más grande que se puede ingresar. El uso de números más grandes falla en silencio, dejando la configuración como antes.
Dave X