OS X Yosemite - Muitos arquivos abertos

16

Eu recentemente atualizei do Mavericks para o Yosemite .... dores de cabeça se seguiram

Tenho certeza de que meu problema está no número de arquivos que posso abrir - mas não sei como resolvê-lo . Eu também tenho certeza que li todos os artigos / dicas sobre como criar o arquivo /etc/sysctl.conf e o arquivo /etc/launchd.conf

Por uma questão de clareza, isso é o que ambos atualmente parecem n.b. (Eu nem tenho certeza se esses são os comandos certos para colocá-los mais - eu tentei praticamente tudo e todas as combinações. Ie: valores mais altos, valores mais baixos, removendo comandos, adicionando comandos)

/etc/launchd.conf

limit maxfiles 16384 32768
limit maxproc 1000 2000

/etc/sysctl.conf

# Turn up maxproc
kern.maxproc=2048
# Turn up the maxproc per user
kern.maxprocperuid=512

Eu também tentei aumentar meus valores ulimit - tanto globalmente quanto localmente para a minha sessão atual ... no bueno

ulimit -a

-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       709
-n: file descriptors                4096

Ok - isto é onde minha dor de cabeça inicialmente começou ... Meu DB (percona-server 5.6.21-69.0 instalado via homebrew) começou a engasgar e morrer, e no mysql-error.log ele foi preenchido com o erro %código%.

2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tokenorder_products.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tokenorders.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tsdevices.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/tsracks.frm' (errno: 24 - Too many open files)
2014-10-21 15:19:50 5190 [ERROR] /usr/local/Cellar/percona-server/5.6.21-69.0/bin/mysqld: Can't open file: './ie/v_classunity_classlist.frm' (errno: 24 - Too many open files)
2014-10-21 15:20:48 5190 [ERROR] Error in accept: Too many open files

Isto é onde eu inicialmente comecei a tentar resolver esse problema "up-ing" meu ulimit, maxfiles, maxproc, etc ...

Eventualmente - frustrado, eu segui em frente e voltaria a esse assunto mais tarde. Então eu estava tentando too many files open e mais e mais ele falhava e cuspia esse mesmo erro (muitas repetições sobre o builder.rb falha ao construir a extensão nativa gem - seguido por um monte de stacktraces repetidos Logs Gist

nokogiri Erros de instalação

Eutentei/googledummontedeabordagensdiferentespararesolveresteproblema(ouseja,bandeirasadicionais,etc.).Oqueéincrível-equandoeucomeceiapensarqueesseproblemaestavaligadoaonúmerodearquivos/processosabertosfoiquandoeuverifiqueiosudogeminstallnokogirienquantoagemestavasendoinstalada....Fiqueimuitosurpresoaoveroqueencontrei

topodurantetop

Parece que meu processo continua bifurcando, o que fazia sentido para essa linha da ONE na minha foto anterior (veja "nokogiri install errors picture")

gem install nokogiri

Então eu estou meio sem ideias, mas não tenho certeza de como depurar mais o # de arquivos?

UPDATE

Bem, eu consegui instalar o nokogiri. Infelizmente, não sei exatamente o que consertou, porque tentei tantas coisas. Mas acho que teve que lidar com a reinstalação do ruby. No entanto, eu ainda estou recebendo o mesmo problema com meu banco de dados reclamando sobre muitos arquivos abertos quando uso qualquer tipo de banco de dados que não seja trivialmente pequeno.

    
por veilig 22.10.2014 / 18:22

3 respostas

15

A modificação do /etc/launchd.conf por muitas consultas do Google e sugestões de SO não funcionou para mim no Yosemite (10.10). O que acabou funcionando, depois de inúmeras combinações de mudança / reinicialização / teste, foi modificar (ou criar, se não existir) o arquivo /etc/sysctl.conf .

Isso é o que eu tive que colocar para fazer isso funcionar

kern.maxfiles=65536
kern.maxfilesperproc=65536

Não tenho certeza se o kern.maxfiles precisa estar lá, mas quando eu o coloquei sozinho, ainda tive o mesmo problema, quando adicionei o kern.maxfilesperproc de tudo começou a funcionar.

    
por 23.10.2014 / 16:53
7

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

Assim como os arquivos plist, seu arquivo bashrc ou semelhante deve ter -rw-r--r-- permissions. Neste ponto, você pode reiniciar seu computador e digitar ulimit -n em seu terminal. Se o seu sistema está configurado corretamente, você deve ver que maxfiles foi configurado para 65536.

Com base em: link

    
por 11.11.2014 / 23:13
5

Os padrões no Yosemite parecem ser 12K e 10K:

$ sysctl -a | grep kern.maxfiles
kern.maxfiles: 12288
kern.maxfilesperproc: 10240

A configuração única kern.maxfiles in /etc/sysctl.conf parece ter resolvido meus problemas. /etc/sysctl.conf file:

kern.maxfiles=24576
    
por 05.05.2015 / 18:14