Existe uma correção para o erro "Há muitos arquivos abertos no sistema" no OS X 10.7.1?

156

Eu preciso me livrar do incômodo limite "Muitos arquivos abertos no sistema" no OS X 10.7.1.

Existe uma maneira?

    
por John Wilund 07.06.2012 / 10:52

7 respostas

202

De acordo com este útil artigo (que eu recomendo a leitura ):

By default, the maximum number of files that Mac OS X can open is set to 12,288 and the maximum number of files a given process can open is 10,240.

Você pode verificar isso com:

  • sysctl kern.maxfiles
  • sysctl kern.maxfilesperproc

Você pode aumentar os limites (por sua conta e risco) com:

  • sysctl -w kern.maxfiles=20480 (ou o número que você escolher)
  • sysctl -w kern.maxfilesperproc=18000 (ou o número que você escolher)

Para tornar a mudança permanente, use sudo para colocar suas configurações em /etc/sysctl.conf (que você pode ter que criar), assim:

kern.maxfiles=20480
kern.maxfilesperproc=18000

Observação: no OS X 10.10 ou inferior, você pode adicionar configurações em /etc/launchd.conf como limit maxfiles e isso substituirá o que você colocar aqui.

Novamente, no artigo:

Once you’ve done this, the kernel itself will have a maximum number of files but the shell might not. And since most processes that will take up this many files are going to be initiated by the shell you’re gonna want to increase that.

O comando para isso é:

ulimit -S -n 2048 # or whatever number you choose

Essa mudança também é temporária; dura apenas a sessão atual do shell. Você pode adicioná-lo ao seu arquivo de configuração do shell ( .bashrc , .zshrc ou qualquer outro) se quiser que ele seja executado toda vez que você abrir um shell.

    
por 29.06.2012 / 22:23
53

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. Crie um arquivo em /Library/LaunchDaemons/limit.maxfiles.plist e cole o seguinte (sinta-se à vontade para alterar os dois números (que são os limites flexível e flexível, 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. Alterar 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:56
29

Você precisará aumentar suas configurações de ulimit - é muito baixo no OS X atualmente - 256 por padrão. Adicione ulimit -n 4096 ou similar ao seu ~ / .profile ou equivalente e isso irá resolvê-lo em seu ambiente local. Execute ulimit -a para verificar seus níveis atuais

Para ver as configurações do sistema, execute isto:

launchctl limit maxfiles

É muito maior no Leão (10240) em uma base por processo do que costumava ser. Mas se você ainda estiver batendo lá, então você pode configurá-lo mais alto usando o mesmo comando com os níveis desejados. Para tornar as mudanças permanentes, o /etc/launchd.conf é onde você precisa adicionar as linhas relevantes.

    
por 07.06.2012 / 13:09
19

Outra opção pode ser encontrar o culpado:

sudo lsof -n | cut -f1 -d' ' | uniq -c | sort | tail

Para o último, você pode ver quais arquivos estão abertos:

sudo lsof -n | grep socketfil

E mate o processo se assim o desejar

kill $pid

Dos comentários:

For what it's worth, you can also get a list of the process IDs with the most open files using

lsof -n | sed -E 's/^[^ ]+[ ]+([^ ]+).*$//' | uniq -c | sort | tail
    
por 18.02.2017 / 01:42
9

Gente, no Mavericks 10.9.4

ulimit -n 2048 funciona bem. Pode ser necessário iniciar uma nova sessão de login.

    
por 04.09.2014 / 18:19
1

Você pode executar

lsof -n

qual processo abre muitos arquivos.

depois mate-o.

ou

sysctl -w kern.maxfiles=20480

mude para um maior.

    
por 18.05.2017 / 04:52
0

Encontrei-o ao fazer um chmod -R, então consegui fazer pequenos passos, por exemplo

# for each directory
find . -type d -exec chmod 755 {} \;
    
por 14.12.2016 / 19:50

Tags