![“Fork falhou” ao usar meu ambiente de desenvolvimento](https://rvso.com/image/83690/%E2%80%9CFork%20falhou%E2%80%9D%20ao%20usar%20meu%20ambiente%20de%20desenvolvimento.png)
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 ulimit
problemas, seja no limite nproc
ou no nofile
limite, 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-nr
diga o contrário:
mlenz@loki ~ % cat /proc/sys/fs/file-nr
13312 0 1629104
Nosso administrador de sistema verificou lsof
e 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?