O limite de arquivos abertos não funciona como antes no OSX Yosemite [duplicado]

22

Acabei de atualizar o Mac OS X para Yosemite e agora alguns aplicativos não funcionam (IBM DB2). Eu sei que preciso definir os arquivos abertos para 65000, no entanto, o comando não funciona.

Andress-MBP:~ root# ulimit -n 12288
Andress-MBP:~ root# ulimit -n 12289
-sh: ulimit: open files: cannot modify limit: Invalid argument

Por que isso está acontecendo e como posso corrigir o problema?

AngocA
fonte

Respostas:

25

Parece que existe um método totalmente diferente para alterar o limite de arquivos abertos para cada versão do OS X!

Para o OS X Sierra (10.12.X), você precisa:

  1. Em /Library/LaunchDaemonscriar um arquivo chamado limit.maxfiles.pliste cole o seguinte em (sinta-se livre para alterar os dois números, que são os limites moles e duros, respectivamente):

    <?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>64000</string>
            <string>524288</string>
          </array>
          <key>RunAtLoad</key>
          <true/>
          <key>ServiceIPC</key>
          <false/>
        </dict>
      </plist> 
    
  2. Mude o proprietário do seu novo arquivo:

    sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
    
  3. Carregue estas novas configurações:

    sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
    
  4. Por fim, verifique se os limites estão corretos:

    launchctl limit maxfiles
    
ninjaPixel
fonte
7
Ansioso por uma nova resposta para o macOS 10.13! :)
NSTJ
1
O processo não funcionou para mim até que eu reiniciei. Obrigado! isso realmente ajudou muito #
2743086
Esta essência também diz modificar esses arquivos é o caminho para atualizar o limite de arquivo aberto para a Serra gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
Devin G Rhode
1
Restart é necessário que os limites para o trabalho (mesmo que a etapa # 4 não mostrar os valores atualizados)
Trinth
21

Vejo que você fez essa pergunta por todo o lado.

Você tem que lidar com um limite do kernel, kern.maxfiles, que é o limite do kernel e não pode ser excedido ao configurar o ulimit.

Consulte a página do blog Krypted, no máximo Arquivos no Mac OS X, para obter uma descrição de como manipular o kern.maxifiles usando o sysctl.

Ainda não carreguei o Yosemite no meu Mac. Os sysctl -w kern.maxfiles=65000trabalhos sobre Mavericks, que tem as mesmas kern.maxfiles = 12288 limite por padrão.

Eu verifiquei no meu VM OS X 10.6.8 e ele tinha o mesmo limite, o que sugere a questão de como ele estava funcionando antes da sua versão do OS X.

Há um compartilhamento de slides ( DB2 para Mac OS X Instalando e configurando o DB2 para Mac OS X ) mostrando os limites recomendados para o uso do DB2, consulte Aumentar Parâmetros do Sistema na página 7.

Aumentar parâmetros do sistema

Abra o /etc/sysctl.conf (ou crie-o se ele ainda não existir) e insira as seguintes configurações. Essas configurações aumentam algumas configurações de memória compartilhada e limites de usuário que o DB2 precisa para funcionar no Mac.

Adicione o seguinte a /etc/sysctl.conf
kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
kern.sysv.shmseg = 32
kern.sysv.shmall = 1179648
kern.maxfilesperproc = 65536
kern.maxfiles = 65536

Parece que você perdeu seu /etc/sysctl.confarquivo quando atualizou.

user187561
fonte
Na verdade, instalei o DB2 há muito tempo e funcionou. Então atualizei para o Maverick no ano passado, sem nenhum problema. E hoje, eu atualizei para Yosemite e esse problema aparece. Não consigo iniciar meu DB2 já instalado.
AngocA
Outra coisa é que meu sysctl.conf é idêntico ao arquivo que você colocou em sua postagem. Criei a primeira vez que instalei o DB2 (um ano atrás), mas não o toquei para a migração.
AngocA
O problema era algumas blankspaces em que file: ibm.com/developerworks/community/forums/html/...
AngocA
1
Espaços à direita, quem teria pensado. A Apple deve ter alguns dos melhores programadores do mundo.
user187561
@ user187561 sysctl(8)vem do BSD.
Desenhou Stephens
12

No Mac OS 10.10, parece que a configuração ulimit não pode exceder a configuração do limite launchctl.

Portanto, você deve primeiro executar o launchctl limit maxfiles no terminal para obter a configuração atual:

launchctl limit maxfiles
maxfiles    256            unlimited 

Então, no meu caso, o limite flexível é 256, o limite rígido é ilimitado. E então, se eu quiser definir o limite flexível para 512:

sudo launchctl limit maxfiles 512 unlimited

O uso detalhado do launchctl para definir limites pode ser encontrado aqui: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html

imadcat
fonte
'launchctl limit maxfiles 512 unlimited' parece definir meus limites (suaves e rígidos) para (512.10240) no Yosemite 10.10.5 em 30/09/2015
Dave X
2
"launchctl limit maxfiles ilimitado ilimitado; launchctl limit maxfiles" indica que 10240 é o maior limite que pode ser inserido. O uso de números maiores falha silenciosamente, deixando a configuração como antes.
Dave X