ulimit value não está mudando para um processo

0

Temos um aplicativo ruby que começou a gerar muitos erros "incapazes de criar novos soquetes: muitos arquivos abertos" recentemente Eu atualizei o "etc / security / limits.conf" como abaixo

root soft  nofile 6553600
root hard  nofile 6553600
nobody soft nofile 655360
nobody soft nofile 655360
mysql hard nofile 655360
mysql hard nofile 655360
*      soft nofile 81920
*      hard nofile 65000
* - nofile 102400    

também atualizou fs.file-max = 90000 em /etc/sysctl.conf

ulimit -a
 core file size          (blocks, -c) 0
 data seg size           (kbytes, -d) unlimited
 scheduling priority             (-e) 0
 file size               (blocks, -f) unlimited
 pending signals                 (-i) 62459
 max locked memory       (kbytes, -l) 64
 max memory size         (kbytes, -m) unlimited
 open files                      (-n) 10240
 pipe size            (512 bytes, -p) 8
 POSIX message queues     (bytes, -q) 819200
 real-time priority              (-r) 0
 stack size              (kbytes, -s) 8192
 cpu time               (seconds, -t) unlimited
 max user processes              (-u) 62459
 virtual memory          (kbytes, -v) unlimited
 file locks                      (-x) unlimited

ulimit -n

10240

mas o limite de arquivos ainda aberto para o processo ruby é 1024

cat /proc/13765/limits (pid of ruby app)
 Limit                     Soft Limit           Hard Limit           Units     
 Max cpu time              unlimited            unlimited            seconds   
 Max file size             unlimited            unlimited            bytes     
 Max data size             unlimited            unlimited            bytes     
 Max stack size            8388608              unlimited            bytes     
 Max core file size        0                    unlimited            bytes     
 Max resident set          unlimited            unlimited            bytes     
 Max processes             62459                62459                processes 
 Max open files            1024                 4096                 files     
 Max locked memory         65536                65536                bytes     
 Max address space         unlimited            unlimited            bytes     
 Max file locks            unlimited            unlimited            locks     
 Max pending signals       62459                62459                signals   
 Max msgqueue size         819200               819200               bytes     
 Max nice priority         0                    0                    
 Max realtime priority     0                    0                    
 Max realtime timeout      unlimited            unlimited            us

o processo do ruby está usando mais de 1024 arquivos

lsof -p 13765 | wc -l

1070

Como posso aumentar o valor "Max open files" para este processo / aplicativo ruby?

    
por Shyam Jos 14.03.2017 / 20:31

1 resposta

0

I have updated /etc/security/limits.conf as below

Isso é lido por pam_limits.so , portanto, só entra em vigor para qualquer coisa que passe pelo PAM, como em um login de usuário.

updated /etc/sysctl.conf

Isso é provável que seja lido por alguns scripts de inicialização, portanto, as alterações só entram em vigor após uma reinicialização ... (Há systemd-sysctl.service e um script em estilo antigo /etc/init.d/procps em meu Debian.)

O ponto é que nenhum desses arquivos é lido instantaneamente, e mudanças em ulimits nunca se aplicam a processos em execução.

How can I increase "Max open files" value for this ruby process/app ?

Descubra o que quer que comece, mude o ulimit para lá e reinicie o processo. Se você iniciá-lo a partir da linha de comando, alterando os limites no shell e reiniciando-o, se você executá-lo a partir de init / systemd / whatever, talvez seja necessário encontrar a configuração correta.

    
por 14.03.2017 / 20:36