“Fork falhou” ao usar meu ambiente de desenvolvimento

“Fork falhou” ao usar meu ambiente de desenvolvimento

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

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

Em 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)
...

Suspeitei de alguns ulimitproblemas, seja no limite nprocou no nofilelimite, mas consegui defini-los para alguns valores incomumente 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 em todo o sistema, por exemplo, o número de identificadores de arquivo, embora /proc/sys/fs/file-nrdiga o contrário:

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

Nosso administrador de sistema verificou lsofe achou que o número de linhas parecia extremamente alto, mas também verifiquei no computador de outro colega e ele tinha um número igualmente alto de linhas:

mlenz@loki ~ % lsof | wc -l
228787

Meu ambiente de desenvolvimento é bastante incomum, pois normalmente inicio 2 servidores de aplicativos Wildfly (um é uma espécie de manequim para um sistema externo, enquanto o outro é usado para nosso aplicativo). O problema parece ocorrer apenas quando inicio os dois servidores de aplicativos, junto com alguns dos outros aplicativos que uso em meu computador. Há muitos serviços em execução no meu sistema, então posso ter que aumentar algum limite que o sistema atinge, mas não tenho absolutamente nenhuma ideia de qual possa ser.

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

informação relacionada