He estado recibiendo varios errores del tipo "demasiados archivos abiertos en el sistema" en Yosemite (10.10.1). Buscar alrededor sugiere configuración kern.maxfiles
y kern.maxfilesperprocess
en /etc/sysctl.conf
.
He intentado esto y kern.maxfilesperprocess
se pega 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
(reiniciar)
% sysctl kern.maxfiles
kern.maxfiles: 12288
% sysctl kern.maxfilesperproc
kern.maxfilesperproc: 18000
Si lo configuro manualmente en la línea de comando, funciona, por lo que no parece que esté excediendo 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, /etc/launchd.conf
pero no tengo este archivo:
% cat /etc/launchd.conf
cat: /etc/launchd.conf: No such file or directory
La búsqueda de Spotlight no encuentra ninguna otra mención de kern.maxfiles
, así que no tengo ideas. ¿Cualquier otra sugerencia?
Aunque no responde directamente a su pregunta, encontrará dos soluciones en superusuario :
Para ajustar los límites de 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 en 65536. El segundo archivo de configuración de plist debe almacenarse /Library/LaunchDaemons/limit.maxproc.plist
con los siguientes contenidos:
<?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 en su lugar de forma predeterminada, pero puede asegurarse de que estén en su lugar ejecutando sudo chmod 644 <filename>
. Si bien 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 en el nivel del sistema, recomendamos establecer también en el nivel de la sesión agregando las siguientes líneas a su 'bashrc', 'bashprofile' o archivo análogo:
ulimit -n 65536
ulimit -u 2048
Al igual que los archivos plist, su archivo bashrc o similar debe tener -rw-r--r--
permisos. En este punto, puede reiniciar su computadora e ingresar ulimit -n en su terminal. Si su sistema está configurado correctamente, debería ver que maxfiles se ha establecido en 65536.
Ajuste el límite de maxfiles y maxproc según lo necesite
Obtenido de: http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/
La modificación /etc/launchd.conf
de muchas consultas de Google y sugerencias SO no parecía funcionar para mí en Yosemite (10.10). Lo que 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 funcione
kern.maxfiles=65536
kern.maxfilesperproc=65536
No estoy seguro de si 'kern.maxfiles' necesita estar allí, pero cuando lo tenía solo, todavía tenía el mismo problema, cuando agregué 'kern.maxfilesperproc' todo comenzó a funcionar.
Si una o ambas de esas soluciones funcionan para usted, dé crédito a los carteles originales.
-XX:-MaxFDLimit
a la JVM para recoger el límite de descriptor de archivo más alto.Mediante una combinación de inicio seguro/verboso, registro de consola y google, encontré un problema similar que me llevó a descubrir un espacio final en la línea maxfiles. Eliminar este espacio resolvió el problema.
Por favor, verifique que las líneas en sysctl.conf no tengan un espacio final. Esto parece estar causando un problema con Yosemite mientras que funcionaba correctamente con versiones anteriores.
Configuraciones corregidas (estas se pueden copiar de forma segura):
kern.maxfiles=20480
kern.maxfilesperproc=18000
Eliminar los espacios en blanco finales solo requiere un paso:
sed -i '~' -e's/[[:space:]]*$//' /etc/sysctl.conf
El comando anterior también guarda una copia de seguridad en /etc/sysctl.conf~
.
CupawnTae
w00t
CupawnTae