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

20

Acabei de atualizar o Mac OS X para o Yosemite e agora alguns aplicativos não funcionam (IBM DB2). Eu sei que eu 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?

    
por AngocA 18.10.2014 / 00:29

3 respostas

22

Parece que existe um método completamente 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/LaunchDaemons , crie um arquivo chamado limit.maxfiles.plist e cole o seguinte (sinta-se à vontade para alterar os dois números, que são os limites flexível e rígido, 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. Altere 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
    
por 24.01.2017 / 15:53
19

Eu vejo que você fez esta pergunta toda.

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

Veja a página do blog do Krypted Máximo de arquivos no Mac OS X para uma descrição sobre como manipular kern.maxifiles usando sysctl.

Ainda não carreguei o Yosemite no meu Mac. O sysctl -w kern.maxfiles=65000 funciona no Mavericks, que tem o mesmo limite de kern.maxfiles = 12288 por padrão.

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

Há uma ação 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 página 7.

Increase System Parameters

Open /etc/sysctl.conf (or create it if it doesn't already exists) and insert the following settings. These settings increase some settings for shared memory and user limits that DB2 needs in order to work on Mac.

Add the following to /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 arquivo /etc/sysctl.conf quando atualizou.

    
por 18.10.2014 / 02:33
12

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

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

launchctl limit maxfiles
maxfiles    256            unlimited 

Portanto, no meu caso, o limite suave é 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 de launchctl para definir limites pode ser encontrado aqui: link

    
por 22.01.2015 / 04:29