Antes do Mavericks, eu poderia usar o /etc/launchd.conf
arquivo para alterar o consumo máximo de recursos do sistema, por exemplo:
limit maxfiles 16384 unlimited
limit maxproc 16384 unlimited
Já não funciona no Mavericks.
Qual é a maneira correta de fazer isso na versão recente do OS X?
/etc/sysctl.conf
, não/etc/sysctrl.conf
.sudo serverinfo --setperfmode true
uma vez para colocar sua máquina no "Modo de desempenho do servidor". Então, você tem um "máximo máximo", dependendo da configuração da sua máquina. Por favor, veja o meu post em discussions.apple.com/thread/5166397 para obter detalhes. Para 10.10 (Yosemite), o modo está ativado por padrão (pelo menos na minha máquina!). Veja minha resposta abaixo.Respostas:
Limite de sessão do shell
Os limites definidos via
ulimit
afetam apenas os processos criados pela sessão atual do shell.root
(administrador) executando comandos de configuração do sistema ou modificando os arquivos de configuração do sistema.Depois que você encerra a sessão do shell (por Ctrl+ D,
exit
ou fecha aTerminal.app
janela etc.), as configurações desaparecem. Se você deseja a mesma configuração na próxima sessão do shell, adicione a configuração ao script de inicialização do shell.NOTA: Se você estiver usando
bash
, deve ser~/.bash_proile
ou~/.bash_login
. Se você estiver usando outras conchas, provavelmente deve estar~/.profile
.Limite do sistema (requer reinicialização para entrar em vigor)
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
(owner:,root:wheel
mode0644
:):Você deve alterar os números de acordo com suas necessidades. Eles são o "limite flexível" (
Para 10.8 (leão da montanha):262144
) e o "limite rígido" (524288
), respectivamente. Para mais informações, consulte a página do manual executandoman launchd.plist
.Você pode adicionar as seguintes linhas em
/etc/sysctl.conf
(proprietário:,root:wheel
modo0644
:):Você deve alterar os números de acordo com suas necessidades. Eles são o "limite de todo o sistema" (
Para Mac OS X mais antigo (acho que funciona com 10.7 (Lion) ou antes):kern.maxfiles
) e o "limite por processo" (kern.maxfilesperproc
), respectivamente. Para obter mais configurações, consulte a página do manual executandoman 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
modo0644
:):Você deve alterar os números de acordo com suas necessidades. Eles são o "limite flexível" (
Se o sistema não permitir que você defina os limites acima de um determinado valor ...262144
) e o "limite rígido" (524288
), respectivamente.O sistema não permite que você defina um valor maior que um "máximo máximo" (proposto pela Apple). Para aumentar esse "máximo máximo", você deve adquirir o "OS X Server" na "App Store" e executar o seguinte comando uma vez:
Isso ativa o "modo de desempenho do servidor" em sua máquina. Você pode então definir o máximo de acordo com a configuração da sua máquina (consulte isto) . Eu tentei isso antes (em Mountain e Mavericks) e funciona! Por favor, veja o meu post ( aqui ) para mais informações.
Referências
fonte
/etc/launchd.conf
abordagem mostra algum efeito quando executoulimit -n
. Alguém poderia atualizar as instruções se isso for significativo?/etc/sysctl.conf
: superuser.com/questions/827984/…Parece que a criação do arquivo
/etc/launchd.conf
e a colocação do seu comando nele devem funcionar.Se não funcionar, você provavelmente poderá editar ou criar o
/etc/rc.local
arquivo e adicionar seu comando, pois há poucas chances de a Apple excluir o suporte ao limite na linha de comando.Edit 1 :
Eu deveria começar com isso, a
launchd
página de manual faz referência aos seguintes arquivos:Minha aposta é que agora você precisa colocar seu comando dentro
~/Library/LaunchAgents
ou dentro/Library/LaunchDaemons
.Você deveria tentar os dois.
Editar 2 :
saiba também que o launchd precisa de um arquivo xml e não apenas de scripts. um gui foi designado para ajudar nessa tarefa e um não livre é o Lingon . Talvez existam outros produtos gratuitos.
fonte
/etc/launchd.conf
e/etc/rc.local
são ignorados na 10.10 e posterior, pois na 10.10 o launchd foi reprojetado e o SystemStarter foi removido.Acabei de adicionar essas duas linhas nos meus
.bash_profile
trabalhos como um encanto
fonte
ulimit -n -H
. No macOS High Sierra,unlimited
alterava tanto o limite "flexível" do usuário quanto.bash_profile
o truque.Limites do sistema
Alterar os limites
/etc/launchd.conf
ou/etc/rc.local
não é mais compatível com o macOS recente. Veja: Sistemas e Tecnologia Antigos .Em vez disso, você deve criar um novo agente de inicialização .
Aqui está o exemplo de
PlistBuddy
comando usando o comando (consulteman PlistBuddy
:):E semelhante para o
maxproc
limite:Para carregar arquivos acima, execute:
sudo launchctl load /Library/LaunchAgents/com.launchd.*.plist
.Notas:
cat
ouPlistBuddy -x -c Print /Library/LaunchAgents/com.launchd.maxfiles.plist
.tail -f /var/log/system.log
.launchd
limites, execute:launchctl limit
..plist
arquivo pode ser colocado na pasta por usuário ou em todo o sistema (LaunchAgents
). Veja:man launchd
eman launchd.plist
, ou esta ou aquela resposta para mais detalhes.Limites do kernel
Observe que os limites do sistema Launchd acima ainda são limitados pelo kernel, portanto você não pode defini-los acima dos limites reais definidos nas variáveis de estado do kernel (consulte:
man sysctl
para obter ajuda).Para ver os limites atuais do kernel, execute:
sysctl -a | grep ^kern.max
.Para aumentar o
maxfiles
limite, execute:sudo sysctl -w kern.maxfiles=20480
.Para fazê-los persistir, use o método semelhante para criar
.plist
arquivos de inicialização , por exemploLimites de Shell
Para limites de shell, adicione
ulimit
comando relevante~/.bashrc
ou~/.bash_profile
arquivo de inicialização para usuário individual ou/etc/bashrc
para todos os usuários. Consulte: Como adicionar configurações de ulimit de shell persistente no Mac?Linhas sugeridas para adicionar:
fonte
maxproc
porque, por padrão, o limite do kernel rígido nesse parâmetro é 1064, ou seja, defini-lo como 2000 ou "ilimitado" na verdade apenas o define 1064. Infelizmente, o kernel não impõe issomaxprocperuid < maxproc
, e as configurações sugeridas deixarão o sistema commaxprocperuid=2000
emaxproc=1064
que é perigoso. Leia mais sobre isso aqui .