7 votos

¿Por qué no se mantiene el ajuste kern.maxfiles en /etc/sysctl.conf?

He estado recibiendo varios errores del tipo "demasiados archivos abiertos en el sistema" en Yosemite (10.10.1). Buscando alrededor sugiere la configuración de kern.maxfiles y kern.maxfilesperprocess en /etc/sysctl.conf .

He probado esto, y kern.maxfilesperprocess se queda después de un reinicio, pero kern.maxfiles no lo hace.

% cat /etc/sysctl.conf 
# NB DO NOT COPY AND PASTE THIS INTO YOUR CONFIG FILE - IT DOESN'T WORK
kern.maxfiles=20480 
kern.maxfilesperproc=18000

(reinicio)

% sysctl kern.maxfiles
kern.maxfiles: 12288
% sysctl kern.maxfilesperproc   
kern.maxfilesperproc: 18000

Si lo establezco manualmente en la línea de comandos, funciona, así que no parece que esté superando ningún límite superior:

% sudo sysctl -w kern.maxfiles=20480 
kern.maxfiles: 12288 -> 20480
% sysctl kern.maxfiles               
kern.maxfiles: 20480

He visto advertencias sobre la anulación de estos valores en /etc/launchd.conf pero no tengo este archivo:

% cat /etc/launchd.conf
cat: /etc/launchd.conf: No such file or directory

La búsqueda en Spotlight no encuentra ninguna otra mención de kern.maxfiles Así que me he quedado sin ideas. ¿Alguna otra sugerencia?

11voto

klanomath Puntos 19587

Aunque no responde directamente a su pregunta, encontrará dos soluciones en superusuario :

  1. Para ajustar los límites de los archivos abiertos en todo el sistema en Mac OS X Yosemite, debe crear dos archivos de configuración. El primero es un archivo de lista de propiedades (también conocido como plist) en '/Library/LaunchDaemons/limit.maxfiles.plist' que contiene la siguiente configuración XML:

    <?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>65536</string>
              <string>65536</string>
            </array>
          <key>RunAtLoad</key>
            <true/>
          <key>ServiceIPC</key>
            <false/>
        </dict>
      </plist>

    Esto establecerá el límite de archivos abiertos a 65536. El segundo archivo de configuración plist debe ser almacenado en /Library/LaunchDaemons/limit.maxproc.plist con el siguiente contenido:

    <?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.maxproc</string>
          <key>ProgramArguments</key>
            <array>
              <string>launchctl</string>
              <string>limit</string>
              <string>maxproc</string>
              <string>2048</string>
              <string>2048</string>
            </array>
          <key>RunAtLoad</key>
            <true />
          <key>ServiceIPC</key>
            <false />
        </dict>
      </plist>

    Ambos archivos plist deben ser propiedad de 'Root:wheel' y tener permisos '-rw-r--r--'. Estos permisos deberían estar por defecto, pero puedes asegurarte de que están en su sitio ejecutando sudo chmod 644 <filename> . Aunque los pasos explicados anteriormente harán que los límites de archivos abiertos en todo el sistema se establezcan correctamente al reiniciar, puede aplicarlos manualmente ejecutando launchctl limit .

    Además de establecer estos límites a nivel de sistema, recomendamos establecerlos también a nivel de sesión añadiendo las siguientes líneas a su archivo 'bashrc', 'bashprofile' o análogo:

    ulimit -n 65536
    ulimit -u 2048

    Al igual que los archivos plist, tu archivo bashrc o similar debe tener -rw-r--r-- permisos. En este punto, puede reiniciar su ordenador e introducir ulimit -n en su terminal. Si su sistema está configurado correctamente, debería ver que maxfiles se ha establecido en 65536.

    Ajusta el límite de maxfiles y maxproc según tus necesidades

    Procedente de: http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/

  2. Modificación de la /etc/launchd.conf por un montón de consultas en google y las sugerencias de SO no parecían funcionar para mí en Yosemite (10.10). Lo que sí terminó funcionando, después de numerosas combinaciones de cambio/reinicio/prueba, fue modificar (o crear si no existe) el /etc/sysctl.conf archivo.

    Esto es lo que tuve que poner para que funcionara

    kern.maxfiles=65536
    kern.maxfilesperproc=65536

    No estoy seguro de si 'kern.maxfiles' tiene que estar ahí, pero cuando lo tenía ahí solo seguía teniendo el mismo problema, cuando añadí el 'kern.maxfilesperproc' todo empezó a funcionar.

Si una o ambas soluciones te funcionan, por favor, da crédito a los carteles originales.

5voto

Mars Puntos 133

A través de una combinación de arranque seguro/verboso, el registro de la consola y Google, encontré un tema similar lo que me llevó a descubrir un espacio final en la línea de maxfiles. La eliminación de este espacio resolvió el problema.

Por favor, compruebe que las líneas en sysctl.conf no tienen un espacio al final. Esto parece estar causando un problema con Yosemite mientras que funcionaba correctamente con las versiones anteriores.

Ajustes corregidos (estos se pueden copiar con seguridad):

kern.maxfiles=20480
kern.maxfilesperproc=18000

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X