Limite de Sessão do Shell
Os limites definidos via ulimit
afetam apenas os processos criados pela sessão atual do shell.
- O "limite flexível" é o limite real usado. Pode ser definido, desde que não seja maior que o "limite rígido".
- O "limite rígido" também pode ser definido, mas apenas para um valor menor que o atual, e somente para um valor não inferior ao "limite flexível".
- O "limite rígido", bem como os limites para todo o sistema, podem ser aumentados por
root
(o administrador), executando comandos de configuração do sistema ou modificando os arquivos de configuração do sistema.
Depois que você terminar a sessão de shell (por Ctrl + D , exit
, ou fechando a janela Terminal.app
, etc.), as configurações se foram. Se você quiser a mesma configuração na próxima sessão de shell, adicione a configuração ao script de inicialização do shell.
OBSERVAÇÃO: Se você estiver usando bash
, ele deverá ser ~/.bash_proile
ou ~/.bash_login
. Se você estiver usando outros shells, provavelmente deve ser ~/.profile
.
Limite do sistema (requer reinicialização para ter efeito)
Para 10.9 (Mavericks), 10.10 (Yosemite), 10.11 (El Capitan) e 10.12 (Sierra): Você precisa criar um arquivo em /Library/LaunchDaemons/limit.maxfiles.plist
(proprietário: root:wheel
, modo: 0644
):
<?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>262144</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
Você deve alterar os números de acordo com suas necessidades. Eles são o "limite flexível" ( 262144
) e o "limite rígido" ( 524288
) respectivamente. Para mais informações, consulte a página de manual executando man launchd.plist
.
Você pode adicionar as seguintes linhas a /etc/sysctl.conf
(proprietário: root:wheel
, modo: 0644
):
kern.maxfiles=524288
kern.maxfilesperproc=262144
Você deve alterar os números de acordo com suas necessidades. Eles são o "limite de todo o sistema" ( kern.maxfiles
) e "limite por processo" ( kern.maxfilesperproc
) respectivamente. Para mais configurações, consulte a página de manual executando man sysctl
ou leia o código-fonte em /usr/include/sys/sysctl.h
.
Você pode adicionar a seguinte linha a /etc/launchd.conf
(proprietário: root:wheel
, modo: 0644
):
limit maxfiles 262144 524288
Você deve alterar os números de acordo com suas necessidades. Eles são o "limite flexível" ( 262144
) e o "limite rígido" ( 524288
) respectivamente.
O sistema não permite que você defina um valor superior a um "máximo rígido" (proposto pela Apple). Para aumentar este "hard maximo", você tem que comprar "OS X Server" da "App Store", então você tem que executar o seguinte comando uma vez:
sudo serverinfo --setperfmode true
Isso ativa o "modo de desempenho do servidor" em sua máquina. Você pode definir o máximo de acordo com a configuração de sua máquina (veja isto) . Eu tentei isso antes (em Mountain e Mavericks) e funciona! Por favor, veja o meu post ( aqui ) para mais informações.
Referências
- Limite de arquivos abertos | riakdocs
- HT3854 Não aplicável no Mac OS X Server versão 10.8 (Mountain Lion)?
- Mac OS X Server v10.6: Noções básicas sobre limites do processo - Suporte da Apple
- OS X Server: dedicando recursos do sistema para serviços de alto desempenho - Suporte da Apple
- launchctl (1) Página do manual do Mac OS X
- launchd.conf (5) Mac OS X Página manual
- launchd.plist (5) Mac OS X Página manual
- sysctl (8) Página do manual do Mac OS X