“Fork falhou” ao usar meu ambiente de desenvolvimento

3

Sou um desenvolvedor de software usando principalmente o Java no Arch Linux. Estou passando por muitas falhas de recursos recentemente, no meu ambiente de desenvolvimento e no próprio sistema.

Quando inicio todos os aplicativos que geralmente uso o sistema começa a gerar erros, por exemplo:

No zsh:

mlenz@loki ~/[redacted] (git)-[master] % cd ..
VCS_INFO_detect_git:9: fork failed: resource temporarily unavailable

No Eclipse (meu IDE):

Unhandled event loop exception
unable to create new native thread

No Wildfly (o servidor de aplicativos que usamos para o projeto atual) durante a inicialização:

13:19:54,962 ERROR [org.xnio.listener] (XNIO-1 I/O-2) XNIO001007: A channel event listener threw an exception: java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:714)
...

Eu suspeitei de alguns problemas de ulimit , seja o nproc ou nofile limit, mas consegui defini-los para alguns valores extraordinariamente grandes sem que o problema fosse corrigido:

mlenz@loki ~ % 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
-m: resident set size (kbytes)      unlimited
-u: processes                       256106
-n: file descriptors                65535
-l: locked-in-memory size (kbytes)  1024
-v: address space (kbytes)          unlimited
-x: file locks                      unlimited
-i: pending signals                 63787
-q: bytes in POSIX msg queues       819200
-e: max nice                        0
-r: max rt priority                 0
-N 15:                              unlimited

Também descobri que o problema pode ser um limite de recursos do kernel para todo o sistema, por exemplo, o número de identificadores de arquivos, embora /proc/sys/fs/file-nr diga o contrário:

mlenz@loki ~ % cat /proc/sys/fs/file-nr 
13312   0   1629104

Nosso sysadmin verificou lsof e achou que o número de linhas parecia extremamente alto, mas eu também chequei no computador de outro colega e ele tinha um número similar de linhas lá:

mlenz@loki ~ % lsof | wc -l
228787

Meu ambiente de desenvolvimento é bastante incomum, pois geralmente inicio 2 servidores de aplicativos Wildfly (um é um tipo de dummy para um sistema externo, enquanto o outro é usado para nosso aplicativo). O problema parece ocorrer apenas quando eu inicio os dois servidores de aplicativos, juntamente com alguns dos outros aplicativos que eu uso no meu computador. Há muitos serviços em execução no meu sistema, portanto, talvez seja necessário aumentar o limite que o sistema alcança, mas não tenho a menor ideia de qual deles pode ser.

Alguma idéia do que eu possa estar perdendo ou o que posso verificar para ver o que está errado?

    
por dasmaze 16.02.2016 / 13:50

0 respostas