Qual arquivo de comando / configuração controla os limites de arquivo aberto no OS X? Existe um comando diferente para o OS X 10.5 / 10.6 / 10.7? As opções I explorar abaixo são ulimit
, sysctl
elaunchctl
"Muitos arquivos abertos" é aparentemente um erro comum no Leopard, talvez outras versões do OS X:
Existem muitas maneiras (relacionadas?) De exibir os limites de arquivos abertos:
$ 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
Foi reivindicado em algumas das postagens acima que elas podem ser modificadas com os seguintes comandos:
sudo launchctl limit maxfiles 16384 32768
sudo ulimit -n 32768
sudo sysctl -w kern.maxfilesperproc=16384
sudo sysctl -w kern.maxfiles=32768
No entanto, fora dos comandos acima, apenas os sysctl
comandos têm algum efeito aparentemente (por exemplo, ulimit -n
e launchctl limit
não mostram alterações após a inserção dos comandos acima, enquanto sysctl -a
mostram as alterações solicitadas).
Os locais correspondentes para alterar esses parâmetros para o sistema operacional são:
/etc/sysctl.conf
/etc/launchd.conf
Eu também descobri uma resposta que diz que ulimit
apenas controla o shell atual.
Como posso ajustar para cima os limites máximos de arquivos / máximos arquivos abertos no macOS?
O seguinte deve resolver os problemas mais comuns (e listados na ordem de sua hierarquia):
Notas:
fonte
Em palavras simples:
O
ulimit
comando fornece "controle sobre os recursos disponíveis para o shell e os processos que ele cria" (consulte:help ulimit
eman bash
). Os recursos fornecidos ao shell são limitados pelos limites de recursos do sistema.O
launchctl
consumo máximo de recursos do sistema controlos pelo processo corrente (ver:man setrlimit
eman launchctl
). Os valores máximos são limitados pelos limites do kernel.Os
sysctl
limites do kernel dos controles (consulte:man sysctl
e os limites do kernel do BSD ).Para aumentar os limites, você pode usar cada um dos comandos, dependendo do problema.
Veja também: Qual é a relação entre `launchctl limit` e` ulimit`?
Para o problema com muitos arquivos abertos, isso depende de qual limite exato ou flexível foi atingido (seja um script de shell local, o script global executado
root
, um aplicativo ou todos os processos ao mesmo tempo). Vale a pena aumentar todos os limites (limites de shell, launchd e kernel).Para aumentar os limites persistentemente, consulte: Como controlar persistentemente o consumo máximo de recursos do sistema no Mac?
fonte