¿Qué archivo de comando / configuración controla los límites de archivos abiertos en OS X? ¿Hay un comando diferente para OS X 10.5 / 10.6 / 10.7? Las opciones exploro a continuación son ulimit
, sysctl
ylaunchctl
Aparentemente, "demasiados archivos abiertos" es un error común en Leopard, quizás en otras versiones de OS X:
Hay muchas formas (¿relacionadas?) De ver los límites de archivos abiertos:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 2048
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 512
virtual memory (kbytes, -v) unlimited
$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 1024 2048
maxfiles 2048 4096
$ sysctl -a | grep files
kern.maxfiles = 32768
kern.maxfilesperproc = 16384
kern.maxfiles: 32768
kern.maxfilesperproc: 16384
kern.num_files: 2049
Se ha afirmado en algunas de las publicaciones anteriores que se pueden modificar con los siguientes comandos:
sudo launchctl limit maxfiles 16384 32768
sudo ulimit -n 32768
sudo sysctl -w kern.maxfilesperproc=16384
sudo sysctl -w kern.maxfiles=32768
Sin embargo, de los comandos anteriores, solo los sysctl
comandos tienen algún efecto aparente (es decir, ulimit -n
y launchctl limit
no muestran ningún cambio después de que se hayan ingresado los comandos anteriores, mientras sysctl -a
que muestran los cambios solicitados).
Las ubicaciones correspondientes para cambiar estos parámetros para el sistema operativo son:
/etc/sysctl.conf
/etc/launchd.conf
También descubrí una respuesta que dice que ulimit
solo controla el shell actual.
¿Cómo puedo ajustar hacia arriba los límites de max files / max open files en macOS?
Lo siguiente debería resolver los problemas más comunes (y se enumeran en orden de jerarquía):
Notas:
fuente
En palabras simples:
El
ulimit
comando proporciona "control sobre los recursos disponibles para el shell y los procesos que crea" (ver:help ulimit
yman bash
). Los recursos dados a shell están limitados por los límites de recursos del sistema.El
launchctl
controles máximo consumo de recursos del sistema por el proceso actual (ver:man setrlimit
yman launchctl
). Los valores máximos están limitados por los límites del núcleo.Los
sysctl
controles del núcleo que los límites (ver:man sysctl
y los límites de sintonización del núcleo de BSD ).Para aumentar los límites, puede usar cada uno de los comandos, según el problema.
Ver también: ¿Cuál es la relación entre `launchctl limit` y` ulimit`?
Para el problema con demasiados archivos abiertos, esto depende de qué límite exacto suave o duro se haya alcanzado (ya sea un script de shell local, el script global ejecutado por
root
, una aplicación o todos los procesos al mismo tiempo). Vale la pena aumentar todos los límites (límites de shell, launchd y kernel).Para aumentar los límites de forma persistente, consulte: ¿Cómo controlar de manera persistente el consumo máximo de recursos del sistema en Mac?
fuente