Aumentando o limite maxfile de Yosemite para Application

5

Eu tenho tentado aumentar o limite maxfile e maxfileperproc no Yosemite, sem sorte. Eu criei um arquivo sysctl.conf na pasta etc, que aumentou com sucesso os valores quando exibidos via grep.

No entanto, se eu olhar para maxfiles limite launchctl, o valor é ainda está incorreto.

Algumas soluções parecem estar usando ulimit -n para definir o limite, mas quando no terminal, eu não posso realmente usar isso. Isso me dá um erro de "argumento inválido" ou "operação não autorizada". Eu consegui aumentar o ulimit através de um script bash_profile, mas como o aplicativo é executado a partir de Applications, não do shell, ele é irrelevante. Também consegui aumentar o ulimit através do usuário root, mas quando isso é feito, ele não salva as alterações.

O ideal é que eu esteja procurando por algo que funcione como o arquivo launchd.conf, e apenas aumente o limite de launchctl maxfiles {#} automaticamente na reinicialização.

Existe uma maneira de fazer isso com sucesso? Talvez usando uma terceira parte como o Lingon, ou com um daemon de lançamento?

Obrigado!

    
por toadstool333 06.11.2014 / 21:39

1 resposta

8

Eu percebi isso graças a jogar com o Riak do Basho . As instruções para Yosemite são:

Para ajustar os limites de arquivos abertos em todo o sistema no Mac OS X Yosemite, você deve criar dois arquivos de configuração.

O primeiro é um arquivo de lista de propriedades (aka plist) em /Library/LaunchDaemons/limit.maxfiles.plist que contém a seguinte configuração 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>

Isso definirá o limite de arquivos abertos para 65536. O segundo arquivo de configuração plist deve ser armazenado em /Library/LaunchDaemons/limit.maxproc.plist com o seguinte conteúdo:

<?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 os arquivos plist devem pertencer a root:wheel e ter permissões -rw-r--r-- . Essas permissões devem estar ativas por padrão, mas você pode garantir que elas estejam em vigor executando sudo chmod 644 <filename> . Embora as etapas explicadas acima façam com que os limites de arquivos abertos em todo o sistema sejam definidos corretamente na reinicialização, você pode aplicá-los manualmente executando launchctl limit .

Além de definir esses limites no nível do sistema, recomendamos a configuração no nível da sessão, acrescentando as seguintes linhas ao arquivo bashrc , bashprofile ou análogo:

ulimit -n 65536
ulimit -u 2048

Como os arquivos plist, seu bashrc ou arquivo semelhante deve ter -rw-r--r-- permissões. Neste ponto, você pode reiniciar seu computador e inserir ulimit -n no seu terminal. Se o seu sistema está configurado corretamente, você deve ver que maxfiles foi configurado para 65536.

O processo é ligeiramente diferente em outra versão do OS X, mas também está bem documentado por essa equipe. Mais uma vez, agradecimentos são devidos à equipe Basho por documentar este processo.

    
por 11.11.2014 / 15:06